在 gridview 中更改复选框上的文本框文本
Changing Textbox text on checking checkbox in gridview
我创建了一个网格视图,其中有一定行数的文本框和复选框。现在我想选中复选框,文本框的文本应该从 'A' 更改为 'P'。
这是我的设计视图。
<asp:GridView ID="grdData" runat="server" style="Text-align:center;">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged="grdData_SelectedIndexChanged"/>
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox ID="CheckBox2" runat="server" OnClick="CheckAllEmp(this)"/>
</HeaderTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label ID="Status_Header" runat="server" Text="Status" />
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Enabled="false" Text="a"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这是我的隐藏代码
protected void chkview_CheckedChanged(object sender, EventArgs e)
{
for (int i = 0; i < grdData.Rows.Count; i++){
CheckBox ck =(CheckBox)grdData.Rows[i].Cells[0].FindControl("CheckBox1");
Label Child_Label =(Label)grdData.Rows[i].Cells[5].FindControl("Child_Label");
if (ck.Checked == true){
Child_Label.Text = "Present";}
else
Child_Label.Text = "Absent";}}
我已经更新了您的代码,并使用客户端站点事件 onclick
而不是 OnCheckedChanged
作为您的复选框,并为文本框 TextBox1
添加一个 属性 ClientIDMode="Static"
.
GrigView 标记:
<asp:GridView ID="grdData" runat="server" Style="Text-align: center;">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" onclick="changeTextValue(this);" />
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox ID="CheckBox2" runat="server" OnClick="CheckAllEmp(this)" />
</HeaderTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label ID="Status_Header" runat="server" Text="Status" />
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Enabled="false" Text="a" ClientIDMode="Static"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
JavaScript 函数:
<script>
function changeTextValue(chk) {
var currentTextID = $(chk).parents('tr').find('input[type="text"][id$="TextBox1"]');
alert(chk.checked);
if (chk.checked == true)
currentTextID.val("Present");
else
currentTextID.val("Absent");
}
</script>
确保 link jQuery 文件在您的页面上。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
将AutoPostback="True"
添加到复选框
和 cs 函数:
protected void chkview_CheckedChanged(object sender, EventArgs e)
{
Checkbox chk = (CheckBox)sender;
GridViewRow row = (GridViewRow)chk.NamingContainer;
Label Child_Label =(Label)row.FindControl("Child_Label");
if(chk.Checked)
Child_Label.Text = "P";
else
Child_Label.Text = "A";
}
我创建了一个网格视图,其中有一定行数的文本框和复选框。现在我想选中复选框,文本框的文本应该从 'A' 更改为 'P'。 这是我的设计视图。
<asp:GridView ID="grdData" runat="server" style="Text-align:center;">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged="grdData_SelectedIndexChanged"/>
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox ID="CheckBox2" runat="server" OnClick="CheckAllEmp(this)"/>
</HeaderTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label ID="Status_Header" runat="server" Text="Status" />
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Enabled="false" Text="a"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这是我的隐藏代码
protected void chkview_CheckedChanged(object sender, EventArgs e)
{
for (int i = 0; i < grdData.Rows.Count; i++){
CheckBox ck =(CheckBox)grdData.Rows[i].Cells[0].FindControl("CheckBox1");
Label Child_Label =(Label)grdData.Rows[i].Cells[5].FindControl("Child_Label");
if (ck.Checked == true){
Child_Label.Text = "Present";}
else
Child_Label.Text = "Absent";}}
我已经更新了您的代码,并使用客户端站点事件 onclick
而不是 OnCheckedChanged
作为您的复选框,并为文本框 TextBox1
添加一个 属性 ClientIDMode="Static"
.
GrigView 标记:
<asp:GridView ID="grdData" runat="server" Style="Text-align: center;">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" onclick="changeTextValue(this);" />
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox ID="CheckBox2" runat="server" OnClick="CheckAllEmp(this)" />
</HeaderTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label ID="Status_Header" runat="server" Text="Status" />
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Enabled="false" Text="a" ClientIDMode="Static"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
JavaScript 函数:
<script>
function changeTextValue(chk) {
var currentTextID = $(chk).parents('tr').find('input[type="text"][id$="TextBox1"]');
alert(chk.checked);
if (chk.checked == true)
currentTextID.val("Present");
else
currentTextID.val("Absent");
}
</script>
确保 link jQuery 文件在您的页面上。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
将AutoPostback="True"
添加到复选框
和 cs 函数:
protected void chkview_CheckedChanged(object sender, EventArgs e)
{
Checkbox chk = (CheckBox)sender;
GridViewRow row = (GridViewRow)chk.NamingContainer;
Label Child_Label =(Label)row.FindControl("Child_Label");
if(chk.Checked)
Child_Label.Text = "P";
else
Child_Label.Text = "A";
}