如何从GridView中获取复选框值时复选框OnCheckedChanged [英] How to get checkbox value from gridview when checkbox 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前景色=白HorizontalAlign =中心/>
< 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屋!