Нажатие кнопки WebPart - PullRequest
       2

Нажатие кнопки WebPart

0 голосов
/ 31 января 2011

У меня есть таблица, которая называется Links.две хранимые процедуры, называемые sp_InsertLinks, sp_GetLinks.

У меня есть простая веб-часть, которая принимает два параметра и добавляет его к вызову таблицы SQL.и кнопка для добавления списка.

Когда я нажимаю на ссылку, отображается следующий интерфейс, в котором я могу добавить txtbox для имени ссылки и Txtbox для URL ссылки.

И когда я отправляю это,страница загружается в последовательности событий обычного жизненного цикла sharepoint.

И я не могу добавить новые ссылки на страницу, потому что метод нажатия кнопки никогда не срабатывает.

Может ли кто-нибудь иметьпосмотрите на это, пожалуйста?

Код:

  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;
        }
    }
}

Спасибо

Хари

Ответы [ 2 ]

0 голосов
/ 31 января 2011

Я думаю, вам нужно просто добавить: // Добавление новой ссылки, хотя кнопка btnAddLink = new Button ();btnAddLink.Text = "Добавить ссылку";btnAddLink.Click + = new EventHandler (btn_AddLink);

перед методом подключения в createchildcontrol ()

надеюсь, что это сработает.

0 голосов
/ 31 января 2011

Я бы почти всегда рекомендовал создавать все ваши элементы управления в 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) {

    }
}

Если вы сделаете это таким образом, ваши события будут чаще, чем нет, срабатывать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...