如何从GridView中获取复选框值时复选框OnCheckedChanged [英] How to get checkbox value from gridview when checkbox OnCheckedChanged

查看:178
本文介绍了如何从GridView中获取复选框值时复选框OnCheckedChanged的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想,当我在GridView的检查更新数据。之前,我首德得到价值复选框,但唯一的数据库我的code返回数据。我想当前值我查了。

codeBehind: -

 保护无效chkSelected_CheckedChanged(对象发件人,EventArgs的发送)
{
    对于(INT的rowIndex = 0;&rowIndex位置LT; GridView1.Rows.Count; rowIndex位置++)
    {
        如果(Convert.ToString(GridView1.Rows [rowIndex位置] .Cells [4]。文本)!=)
        {
            回复于(真);
        }
        其他
        {
            的Response.Write(FASLE);
        }
    }
}

设计code: -

 < ASP:GridView控件ID =GridView1=服务器的DataSourceID =SqlDataSource1
              CELLPADDING =4网格=无前景色=#333333FONT-SIZE =小
              的AutoGenerateColumns =FALSE>
    < RowStyle的BackColor =#EFF3FB/>
    <柱体和GT;
        < ASP:BoundField的数据字段=LevelID的HeaderText =ลำดับข้อ只读=真
                        ItemStyle-WIDTH =50>
        < / ASP:BoundField的>
        < ASP:BoundField的数据字段=LevelDesc的HeaderText =คำถาม只读=真
                        ItemStyle-WIDTH =250>
        < / ASP:BoundField的>
        < ASP:BoundField的数据字段=ChoiceID的HeaderText =ข้อย่อย只读=真
                        ItemStyle-WIDTH =50>
        < / ASP:BoundField的>
        < ASP:BoundField的数据字段=ChoiceDesc的HeaderText =คำถามย่อย只读=真
                        ItemStyle宽度=400>
        < / ASP:BoundField的>
        < ASP:的TemplateField的HeaderText =ใช่>
            <&ItemTemplate中GT;
                < ASP:复选框ID =chkSelected=服务器选中='<%#的eval(选定)的ToString()等于(真)%GT;'
                     的AutoPostBack =真OnCheckedChanged =chkSelected_CheckedChanged的CssClass =chkBox/>
            < / ItemTemplate中>
        < / ASP:的TemplateField>
    < /专栏>
    < FooterStyle背景色=#507CD1前景色=白字体粗体=真/>
    < PagerStyle背景色=#2461BF前景色=白Horizo​​ntalAlign =中心/>
    < SelectedRowStyle背景色=#D1DDF1FONT-粗体=真前景色=#333333/>
    < HeaderStyle背景色=#0000CDFONT-粗体=真前景色=白/>
    < EditRowStyle背景色=#2461BF/>
    < AlternatingRowStyle背景色=白/>
< / ASP:GridView的>


解决方案

使用 GridViewRow 如下...你可以得到这是使用检查复选框的当前行 NamingContainer 属性如下...

修改: -
更改标记,并添加Hiddenfield持有价值被选定为遵循...

 < ASP:的TemplateField的HeaderText =ใช่>
            <&ItemTemplate中GT;
                < ASP:复选框ID =chkSelected=服务器选中='<%#的eval(选定)的ToString()等于(真)%GT;'
                     的AutoPostBack =真OnCheckedChanged =chkSelected_CheckedChanged的CssClass =chkBox/>
                < ASP:HiddenField ID =hiddenField1值='<%#的eval(选定)的ToString()%GT;' =服务器/>
            < / ItemTemplate中>
 < / ASP:的TemplateField>

然后你就可以得到Hiddenfield如下,它的价值,以及

 保护无效chkSelected_CheckedChanged(对象发件人,EventArgs的发送)
    {
         GridViewRow行=(GridViewRow)(((复选框)发送方).NamingContainer);
         HiddenField hdnCheck =(HiddenField)row.Cells [4] .FindControl(hiddenField1);
         如果(Convert.ToString(hdnCheck.Value!=)
           {
               回复于(真);
           }
           其他
           {
               的Response.Write(FASLE);
           }       编辑: - //您可以轻松地获取复选框已cheked,做你的逻辑
         复选框chkSelect =(复选框)发送;
         如果(chkSelect.Checked)
           {
               回复于(真);
           }
           其他
           {
               的Response.Write(FASLE);
           }
    }

I want to update data when I checked in gridview. Before I shoude get value from checkbox but my code return data from database only. I want current value after I checked.

CodeBehind:-

protected void chkSelected_CheckedChanged(object sender, EventArgs e)
{
    for (int rowIndex = 0; rowIndex < GridView1.Rows.Count; rowIndex++)
    {
        if (Convert.ToString(GridView1.Rows[rowIndex].Cells[4].Text) != "")
        {
            Response.Write("true");
        }
        else
        {
            Response.Write("fasle");
        }
    }
}

Design Code:-

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"
              CellPadding="4" GridLines="None" ForeColor="#333333" Font-Size="Smaller" 
              AutoGenerateColumns="False">
    <RowStyle BackColor="#EFF3FB" />
    <Columns>
        <asp:BoundField DataField="LevelID" HeaderText="ลำดับข้อ" ReadOnly="True" 
                        ItemStyle-Width="50"  >
        </asp:BoundField>
        <asp:BoundField DataField="LevelDesc" HeaderText="คำถาม" ReadOnly="True" 
                        ItemStyle-Width="250"  >
        </asp:BoundField>
        <asp:BoundField DataField="ChoiceID" HeaderText="ข้อย่อย" ReadOnly="True" 
                        ItemStyle-Width="50"  >
        </asp:BoundField>
        <asp:BoundField DataField="ChoiceDesc" HeaderText="คำถามย่อย" ReadOnly="True" 
                        ItemStyle-Width="400"  >
        </asp:BoundField>
        <asp:TemplateField HeaderText="ใช่">          
            <ItemTemplate>              
                <asp:CheckBox ID="chkSelected" runat="server" Checked='<%# Eval("Selected").ToString().Equals("True") %>'
                     AutoPostBack="true" OnCheckedChanged="chkSelected_CheckedChanged" CssClass="chkBox" />          
            </ItemTemplate>       
        </asp:TemplateField> 
    </Columns>
    <FooterStyle BackColor="#507CD1" ForeColor="White" Font-Bold="True" />
    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
    <HeaderStyle BackColor="#0000CD" Font-Bold="True" ForeColor="White" />
    <EditRowStyle BackColor="#2461BF" />
    <AlternatingRowStyle BackColor="White" />
</asp:GridView>

解决方案

use GridViewRow as follow...You can get the current row of the checkbox which is checked using NamingContainer property as follow...

Edit:- Change the markup and add Hiddenfield to hold value for Selected as follow...

<asp:TemplateField HeaderText="ใช่">          
            <ItemTemplate>              
                <asp:CheckBox ID="chkSelected" runat="server"  Checked='<%# Eval("Selected").ToString().Equals("True") %>'
                     AutoPostBack="true" OnCheckedChanged="chkSelected_CheckedChanged" CssClass="chkBox" />     
                <asp:HiddenField ID="hiddenField1" Value='<%# Eval("Selected").ToString() %>' runat="server" />    
            </ItemTemplate>       
 </asp:TemplateField> 

Then you can get the Hiddenfield as follow and it's value as well

protected void chkSelected_CheckedChanged(object sender, EventArgs e)
    {
         GridViewRow row = (GridViewRow)(((CheckBox)sender).NamingContainer);
         HiddenField hdnCheck=(HiddenField)row.Cells[4].FindControl("hiddenField1");
         if (Convert.ToString(hdnCheck.Value != "")
           {
               Response.Write("true");
           }
           else
           {
               Response.Write("fasle");
           }

       Edit:-//You can easily get Checkbox which has been cheked,and do your logic
         CheckBox chkSelect=(CheckBox)sender;
         if (chkSelect.Checked)
           {
               Response.Write("true");
           }
           else
           {
               Response.Write("fasle");
           }    
    }

这篇关于如何从GridView中获取复选框值时复选框OnCheckedChanged的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆