gridview中的Linkbutton没有触发

本文关键字:中的 Linkbutton gridview | 更新日期: 2023-09-27 18:02:46

<asp:GridView ID="gvBlockUnblock" runat="server" AutoGenerateColumns="False" 
                       BackColor ="AliceBlue"
                      onrowdatabound="gvBlockUnblock_RowDataBound" DataKeyNames="CPID,PUBLISHED"
                    style="margin-top: 0px" 
                    AllowPaging="True" onpageindexchanging="gvBlockUnblock_PageIndexChanging" 
                    PageSize="10" EnableViewState= "true"
                    onselectedindexchanged="gvBlockUnblock_SelectedIndexChanged" >
        <Columns>
                    <asp:TemplateField HeaderText="S.No.">
                    <ItemTemplate>
                    <asp:LinkButton ID="lbSNo" runat="server" 
                    Text='<%# (Eval("sno")) %>'
                    PostBackUrl='<%#"~/_UILayer/ComplaintReport.aspx?PINo="+Eval("CPID") %>' >
                    </asp:LinkButton>
                    </ItemTemplate>
                    </asp:TemplateField>
         <asp:BoundField  HeaderText = "Complaint" />
         <asp:HyperLinkField   DataNavigateUrlFields="CPID" datatextfield = "CPID"
                DataNavigateUrlFormatString="WebForm1.aspx?CPID={0}" HeaderText=" Problem Item No"/>

            <asp:BoundField  DataField="NewComplaints" 
                HeaderText="Number of New Complaints" SortExpression="NewComplaints" />
            <asp:BoundField DataField="TotalNumberofComplaints" 
                HeaderText="Total Number of Complaints" SortExpression="TotalNumberofComplaints" />
            <asp:BoundField DataField="NumberofUnblocks" HeaderText="Number of Unblocks" 
                SortExpression="TotalNumberofComplaints" />

          <asp:TemplateField  HeaderText = "Comments">
           <ItemTemplate>
                        <asp:TextBox ID="txtAdminComment" Font-Names="Arial" ReadOnly="false" Width="200" Height="30"
                            TextMode="multiLine" runat="server" BorderStyle="NotSet"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>

           <asp:TemplateField  HeaderText = " Block / Unblock">
                <ItemTemplate>
                     <asp:button ID ="btnBlockUnblock"  runat = "server" 
                         Text = '<%# CheckBlock(Eval("PUBLISHED")) %>' CommandName="Select" 
                        CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"  CausesValidation="False"  />
                </ItemTemplate>
            </asp:TemplateField>

                    <asp:HyperLinkField   DataNavigateUrlFields="CPID"  Text="View Details"  
                DataNavigateUrlFormatString="ItemHistoryForm.aspx?CPID={0}" HeaderText=" Problem Item No"/>
        </Columns>
    </asp:GridView>

aspx.cs

   protected void gvBlockUnblock_SelectedIndexChanged(object sender, EventArgs e)
    {
        string ComplaintProfileId = gvBlockUnblock.DataKeys[gvBlockUnblock.SelectedIndex].Values["CPID"].ToString();
        string ISPUBLISHED = gvBlockUnblock.DataKeys[gvBlockUnblock.SelectedIndex].Values["PUBLISHED"].ToString();
        string date = System.DateTime.Now.ToString();
        TextBox tb = (TextBox)gvBlockUnblock.Rows[gvBlockUnblock.SelectedIndex].FindControl("txtAdminComment");
        string Comment = tb.Text;
        if (string.IsNullOrEmpty(Comment))
        {
            WebMsgBox.Show("empty");
        }
        else
        {
            if (ISPUBLISHED == "N")
            {
                ISPUBLISHED = "N";
            }
            else
            {
                ISPUBLISHED = "Y";
            }
            string AdminComment = (System.DateTime.Now.ToString() + " :  " + Comment);
            AddCommentBLL.InsertComment(AdminComment, ComplaintProfileId, ISPUBLISHED);
            gvBlockUnblock.DataSource = AddCommentBLL.GetItem();
            gvBlockUnblock.DataBind();
        }
    }

所以,当点击按钮ID ="btnBlockUnblock"时,这个网格视图被选中的索引改变需要触发。页面正在刷新。

谢谢太阳

gridview中的Linkbutton没有触发

您必须使用GridView RowCommand事件而不是GridView SelectedIndex Change..如

protected void gvBlockUnblock_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Select")
    {
string ComplaintProfileId = gvBlockUnblock.DataKeys[gvBlockUnblock.SelectedIndex].Values["CPID"].ToString();
    string ISPUBLISHED = gvBlockUnblock.DataKeys[gvBlockUnblock.SelectedIndex].Values["PUBLISHED"].ToString();
    string date = System.DateTime.Now.ToString();
    TextBox tb = (TextBox)gvBlockUnblock.Rows[gvBlockUnblock.SelectedIndex].FindControl("txtAdminComment");
    string Comment = tb.Text;
    if (string.IsNullOrEmpty(Comment))
    {
        WebMsgBox.Show("empty");
    }
    else
    {
        if (ISPUBLISHED == "N")
        {
            ISPUBLISHED = "N";
        }
        else
        {
            ISPUBLISHED = "Y";
        }
        string AdminComment = (System.DateTime.Now.ToString() + " :  " + Comment);
        AddCommentBLL.InsertComment(AdminComment, ComplaintProfileId, ISPUBLISHED);
        gvBlockUnblock.DataSource = AddCommentBLL.GetItem();
        gvBlockUnblock.DataBind();
    }
    }
}

编辑:从你的评论中阅读代码后,我发现了你的问题。

实际上发生了什么,当你点击按钮,页面加载事件在你的gridview事件之前触发,那里你的gridview数据再次绑定,它失去了你的fired event。你必须检查你的页面回发,把if(!IsPostBack)在你的页面加载,你试图绑定你的数据到gridview。

    protected void Page_Load(object sender, EventArgs e)
    {
     if(!IsPostBack)
     {
        // gets the items table using stored proc GetItem
        gvBlockUnblock.DataSource = AddCommentBLL.GetItem();
        gvBlockUnblock.DataBind();
        // used for paging
        Session["MyDataSett"] = gvBlockUnblock.DataSource;
     }
   }