WebPart-按钮单击

发布于 2024-10-15 00:03:38 字数 5037 浏览 1 评论 0原文

我有一个名为“链接”的表。 两个存储过程称为sp_InsertLinks、sp_GetLinks。

我有一个简单的 Web 部件,它接受两个参数并将其添加到 SQL 表调用链接。

在第一个界面中,它显示数据库中的值列表和“添加列表”按钮。

当我单击链接时,它会显示下一个界面,我可以在其中添加链接名称的 txtbox 和链接 URL 的 Txtbox。

当我提交此页面时,页面正在按照正常共享点生命周期的事件顺序加载。

我无法将新链接添加到页面中,因为按钮单击方法永远不会被触发。

有人可以看一下这个吗?

代码是

  using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using System.Text ;
using System.Data ;
using System.Data.SqlClient;
using System.Drawing;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;

namespace ContextMenuOptionsUsingJQuery
{
    [Guid("7a3a52d4-9ad6-44b2-b96f-852da1a95371")]
    public class ContextMenuOptionsUsingJQuery : System.Web.UI.WebControls.WebParts.WebPart
    {

        SqlConnection con;
        SqlCommand cmd;
        SqlDataReader dr;
        string Con_string = string.Empty;
        Button btnAddLink;
        Button btnAddNewLink;
        StringBuilder outputDisplay;
        TextBox txtLink;
        TextBox txtLinkUrl;
        Label lblDisplay = new Label();

        public ContextMenuOptionsUsingJQuery()
        {

        }



         protected override void CreateChildControls()
        {
            try
            {

                // Getting the Connection 

                ConnectionMethod();

                // Calling the Appropraite Method or stored Procedures

                RefreshData();



                // Adding a New Link though the button

                    btnAddLink = new Button();
                    btnAddLink.Text = "Add Link";
                    btnAddLink.Click += new EventHandler(btn_AddLink);

                    //New item

                    Controls.Add(btnAddLink);



            }
            catch (Exception e)
            {
                Label l = new Label();
                l.Text = e.StackTrace;
                Controls.Add(l);
            }         
        }



        // Button Add Link
        private void btn_AddLink(Object sender, EventArgs e)
        {
            Controls.Clear();
            btnAddNewLink = new Button();
            txtLink = new TextBox();
            txtLinkUrl = new TextBox();
            Controls.Add(txtLink);
            Controls.Add(txtLinkUrl);                
            btnAddNewLink.Text = "ADD NEW Link";
            btnAddNewLink.Click += new EventHandler(btnAddNewLink_Click);
            Controls.Add(btnAddNewLink);

        }
        private void btnAddNewLink_Click(Object sender, EventArgs e)
        {
            int i;
            try
            {
                ConnectionMethod();
                cmd.CommandText = "sp_InsertLinks";
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter paramLinkName = new SqlParameter("@LinkName", SqlDbType.VarChar, 50);
                SqlParameter paramLinkUrl = new SqlParameter("@LinkUrl", SqlDbType.VarChar, 50);
                paramLinkName.Direction = ParameterDirection.Input;
                paramLinkUrl.Direction = ParameterDirection.Input;
                paramLinkName.Value = txtLink.Text.ToString();
                paramLinkUrl.Value = txtLinkUrl.Text.ToString();
                cmd.Parameters.Add(paramLinkUrl);
                cmd.Parameters.Add(paramLinkName);
                i = cmd.ExecuteNonQuery();
                con.Close();
                ConnectionMethod();
                RefreshData();
            }
            catch (Exception exp)
            {
                Label l = new Label();
                l.Text = exp.StackTrace;
                Controls.Add(l);
            }
            finally
            {
                con.Close();
            }         

        }
        private void RefreshData()
        {
            cmd.CommandText = "sp_GetLinks";
            cmd.CommandType = CommandType.StoredProcedure;
            dr = cmd.ExecuteReader();

            outputDisplay = new System.Text.StringBuilder();
            outputDisplay.AppendLine("<br/>");

            // Fetching the Data from the Datareader object

            while (dr.Read())
            {
                outputDisplay.AppendLine("<a href=" + dr[0].ToString() + ">" + dr[1] + "</a>" + "<br/><br/>");
            }
            con.Close();
            outputDisplay.AppendLine("<br/> <br/>");
            lblDisplay.Text = outputDisplay.ToString();
            Controls.Add(lblDisplay);

        }


        // Method to get the Connection

        public void ConnectionMethod()
        {
            con = new SqlConnection();
            cmd = new SqlCommand();
            Con_string = "Data Source=servername;Initial Catalog=HariVMTest;Integrated Security=True";
            con.ConnectionString = Con_string;
            con.Open();
            cmd.Connection = con;
        }
    }
}

谢谢哈里

I have a table called Links.
two stored Procedures called sp_InsertLinks, sp_GetLinks.

I have simple webpart which takes two parameters and adds it the SQL Table call Links.

In The first Interface it displays the list of values from the database and a Button to ADD List.

When I click on the Link it displays next interface, where I can add txtbox for Link Name and Txtbox for Link URL.

And When I submit this The page is loading in the sequence of events of normal sharepoint lifecycle.

And I am unable to add the new links into the page because the button click method never gets fired.

Could any one have a look at this please?

The Code is :

  using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using System.Text ;
using System.Data ;
using System.Data.SqlClient;
using System.Drawing;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;

namespace ContextMenuOptionsUsingJQuery
{
    [Guid("7a3a52d4-9ad6-44b2-b96f-852da1a95371")]
    public class ContextMenuOptionsUsingJQuery : System.Web.UI.WebControls.WebParts.WebPart
    {

        SqlConnection con;
        SqlCommand cmd;
        SqlDataReader dr;
        string Con_string = string.Empty;
        Button btnAddLink;
        Button btnAddNewLink;
        StringBuilder outputDisplay;
        TextBox txtLink;
        TextBox txtLinkUrl;
        Label lblDisplay = new Label();

        public ContextMenuOptionsUsingJQuery()
        {

        }



         protected override void CreateChildControls()
        {
            try
            {

                // Getting the Connection 

                ConnectionMethod();

                // Calling the Appropraite Method or stored Procedures

                RefreshData();



                // Adding a New Link though the button

                    btnAddLink = new Button();
                    btnAddLink.Text = "Add Link";
                    btnAddLink.Click += new EventHandler(btn_AddLink);

                    //New item

                    Controls.Add(btnAddLink);



            }
            catch (Exception e)
            {
                Label l = new Label();
                l.Text = e.StackTrace;
                Controls.Add(l);
            }         
        }



        // Button Add Link
        private void btn_AddLink(Object sender, EventArgs e)
        {
            Controls.Clear();
            btnAddNewLink = new Button();
            txtLink = new TextBox();
            txtLinkUrl = new TextBox();
            Controls.Add(txtLink);
            Controls.Add(txtLinkUrl);                
            btnAddNewLink.Text = "ADD NEW Link";
            btnAddNewLink.Click += new EventHandler(btnAddNewLink_Click);
            Controls.Add(btnAddNewLink);

        }
        private void btnAddNewLink_Click(Object sender, EventArgs e)
        {
            int i;
            try
            {
                ConnectionMethod();
                cmd.CommandText = "sp_InsertLinks";
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter paramLinkName = new SqlParameter("@LinkName", SqlDbType.VarChar, 50);
                SqlParameter paramLinkUrl = new SqlParameter("@LinkUrl", SqlDbType.VarChar, 50);
                paramLinkName.Direction = ParameterDirection.Input;
                paramLinkUrl.Direction = ParameterDirection.Input;
                paramLinkName.Value = txtLink.Text.ToString();
                paramLinkUrl.Value = txtLinkUrl.Text.ToString();
                cmd.Parameters.Add(paramLinkUrl);
                cmd.Parameters.Add(paramLinkName);
                i = cmd.ExecuteNonQuery();
                con.Close();
                ConnectionMethod();
                RefreshData();
            }
            catch (Exception exp)
            {
                Label l = new Label();
                l.Text = exp.StackTrace;
                Controls.Add(l);
            }
            finally
            {
                con.Close();
            }         

        }
        private void RefreshData()
        {
            cmd.CommandText = "sp_GetLinks";
            cmd.CommandType = CommandType.StoredProcedure;
            dr = cmd.ExecuteReader();

            outputDisplay = new System.Text.StringBuilder();
            outputDisplay.AppendLine("<br/>");

            // Fetching the Data from the Datareader object

            while (dr.Read())
            {
                outputDisplay.AppendLine("<a href=" + dr[0].ToString() + ">" + dr[1] + "</a>" + "<br/><br/>");
            }
            con.Close();
            outputDisplay.AppendLine("<br/> <br/>");
            lblDisplay.Text = outputDisplay.ToString();
            Controls.Add(lblDisplay);

        }


        // Method to get the Connection

        public void ConnectionMethod()
        {
            con = new SqlConnection();
            cmd = new SqlCommand();
            Con_string = "Data Source=servername;Initial Catalog=HariVMTest;Integrated Security=True";
            con.ConnectionString = Con_string;
            con.Open();
            cmd.Connection = con;
        }
    }
}

Thank you

Hari

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

镜花水月 2024-10-22 00:03:38

我几乎总是建议在 CreateChildControls() 中创建所有控件

,然后您应该使用 Visible 属性根据需要显示和隐藏控件。

代码将如下所示:

public class ContextMenuOptionsUsingJQuery : System.Web.UI.WebControls.WebParts.WebPart {

    Button btnAddLink;
    Button btnAddNewLink;

    protected override void CreateChildControls() {
        btnAddLink = new Button();
        btnAddLink.Text = "Add Link";
        btnAddLink.Click += new EventHandler(btn_AddLink);
        Controls.Add(btnAddLink);    

        btnAddNewLink.Text = "ADD NEW Link";
        btnAddNewLink.Click += new EventHandler(btnAddNewLink_Click);
        btnAddNewLink.Visible = false;
        Controls.Add(btnAddNewLink);
    }

    private void btn_AddLink(Object sender, EventArgs e) {
        btnAddLink.Visible = false;
    }

    private void btnAddNewLink_Click(Object sender, EventArgs e) {

    }
}

如果您这样做,您的事件通常会正确触发。

I would nearly always recommend creating all your controls in CreateChildControls()

Then you should use the Visible property to show and hide the controls as needed.

The code would then look something like this:

public class ContextMenuOptionsUsingJQuery : System.Web.UI.WebControls.WebParts.WebPart {

    Button btnAddLink;
    Button btnAddNewLink;

    protected override void CreateChildControls() {
        btnAddLink = new Button();
        btnAddLink.Text = "Add Link";
        btnAddLink.Click += new EventHandler(btn_AddLink);
        Controls.Add(btnAddLink);    

        btnAddNewLink.Text = "ADD NEW Link";
        btnAddNewLink.Click += new EventHandler(btnAddNewLink_Click);
        btnAddNewLink.Visible = false;
        Controls.Add(btnAddNewLink);
    }

    private void btn_AddLink(Object sender, EventArgs e) {
        btnAddLink.Visible = false;
    }

    private void btnAddNewLink_Click(Object sender, EventArgs e) {

    }
}

If you do it this way, your events will more often than not, fire correctly.

居里长安 2024-10-22 00:03:38

我认为你需要添加:
// 通过按钮添加新链接
btnAddLink = 新按钮();
btnAddLink.Text = "添加链接";
btnAddLink.Click += new EventHandler(btn_AddLink);

在 createchildcontrol() 中的连接方法之前

希望这有效。

i think you need to just add :
// Adding a New Link though the button
btnAddLink = new Button();
btnAddLink.Text = "Add Link";
btnAddLink.Click += new EventHandler(btn_AddLink);

before connectionmethod in createchildcontrol()

hope this works.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文