【问题标题】:Selecting multiple checkbox inside gridview在gridview中选择多个复选框
【发布时间】:2013-01-02 12:23:08
【问题描述】:

在此处输入代码我在GridView 模板中有一个CheckBox。当检查CheckBox 时,它应该将列值发送到存储过程,并在另一个gridview 中显示所需的结果。 选中两个复选框时,应在其他GridView中显示两列的值。

我的问题是单击第二个复选框会删除第一个复选框的值,并导致仅第二个复选框的值显示在另一个网格视图中。

 protected void ChkRule_CheckedChanged(object sender, EventArgs e)
    {
        StringCollection sc = new StringCollection();

        for (int i = 0; i < gdYojnaDtl.Rows.Count; i++)
        {

            string yojnaNo = "";
            CheckBox chl = (CheckBox)gdYojnaDtl.Rows[i].Cells[0].FindControl("CheckBox1");
            //CheckBox chl = (CheckBox)sender;
            if (chl != null)
            {
                if (chl.Checked == true)
                {




                    int rowsNo = (Convert.ToInt16(chl.ToolTip) - 1); 
                    yojnaNo = ((Label)gdYojnaDtl.Rows[rowsNo].FindControl("lblYojnaNo")).Text;
                    sc.Add(yojnaNo);


                }

            }
        }

    foreach (string obj in sc)
    {

        objyojnadetail4.YojnaNo = obj;
        DataTable city = objyojnadetail4.Selectcity();
        gdCityDetail.DataSource = city;



        gdCityDetail.DataBind();

    }

}





 <Columns>
                        <asp:TemplateField HeaderText="Scheme Code">
                        <ItemTemplate>
                            <asp:Label ID="lblYojnaNo" runat="server" Text='<%#Eval("Yojna_No")%>' />

                        </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Scheme Name">
                         <ItemTemplate>
                     <asp:Label ID="lblYojnaName" runat="server" Text='<%#Eval("Yojna_Name")%>' />

                        </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Assistant Name">
                         <ItemTemplate>
                         <asp:Label ID="lblAsstName" runat="server" Text=' <%#Eval("Asst_Name")%>' />

                        </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Select for City">
                        <ItemTemplate>
                 <asp:CheckBox ID="CheckBox1"  runat="server"    AutoPostBack="true" 
                  oncheckedchanged="ChkRule_CheckedChanged" 
                  ToolTip="<%#Container.DataItemIndex+1 %> "   CommandName="cbCity"/>





                        </ItemTemplate>
                        </asp:TemplateField>

                    </Columns>

【问题讨论】:

  • 您是否在来自Page_Load 的回发中重新加载GridView?使用这个:if(!Page.IsPostBack) DataBindGrid();.
  • @tim 数据没有通过你的解决方案绑定到网格视图中
  • 它应该可以工作,因为ViewState 默认是启用的。如果您在每次回发时重新加载网格,您可以防止触发事件并覆盖更改的值(例如 CheckBox.Checked)。
  • 我无法发布我的代码,但您的解决方案不起作用
  • @user1942107 Tim 是对的,您从头开始制作一些 DataBing 和 Grid 如何呈现它,或者您禁用了视图状态。如果您无法发布代码,您可以在空白页面上制作一个具有相同问题的简单工作示例,然后将其发布在这里(同样的问题)

标签: c# asp.net


【解决方案1】:
//**This code is tested and working fine** 
//at aspx page
<columns>
<asp:TemplateField HeaderText="Checkboxes">
        <ItemTemplate>
          <asp:CheckBox ID="cheker" runat="server" />
        </ItemTemplate>
</asp:TemplateField>
</Columns>

//this button is outside gridview but in same page
<asp:Button ID="check" runat="server" CssClass="btnstyle" Text="Check"       OnClick="btnredirect_Click" />

//代码隐藏中点击事件的方法

protected void btnredirect_Click(object sender, EventArgs e)
{
    Button btn = sender as Button;
    switch (btn.ID)
    {
        case "check":
            {
                for(int i=0;i<Gvshowcart.Rows.Count; i++)
                {
                    CheckBox chl =     (CheckBox)Gvshowcart.Rows[i].Cells[0].FindControl("cheker");
                    if (chl != null)
                    {
                        if (chl.Checked == true)
                        {
                            chl.Checked = false;
                        }
                        else
                        {
                            chl.Checked = true;
                        }
                    }

                }

            }
            break;
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2014-06-29
    • 2015-01-24
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多