Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在gridview中选中复选框时更改文本框文本_Asp.net_Gridview_Checkbox - Fatal编程技术网

Asp.net 在gridview中选中复选框时更改文本框文本

Asp.net 在gridview中选中复选框时更改文本框文本,asp.net,gridview,checkbox,Asp.net,Gridview,Checkbox,我已经创建了一个网格视图,其中有一定数量的文本框和复选框行。现在我想勾选复选框,文本框的文本应该从“A”改为“P”。 这是我的设计观点 <asp:GridView ID="grdData" runat="server" style="Text-align:center;"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="CheckBox1" runat="serv

我已经创建了一个网格视图,其中有一定数量的文本框和复选框行。现在我想勾选复选框,文本框的文本应该从“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";}}
protectedvoid chkview\u CheckedChanged(对象发送方,事件参数e)
{
对于(int i=0;i
我已更新了您的代码,并使用客户端站点事件
onclick
而不是
OnCheckedChanged
作为复选框,并为textbox
TextBox1
添加一个属性
clientmode=“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>
<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>

JavaScript函数:

<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>
<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>

函数changeTextValue(chk){
var currentTextID=$(chk).parents('tr').find('input[type=“text”][id$=”TextBox1“]);
警报(已检查通道);
如果(chk.checked==true)
currentTextID.val(“当前”);
其他的
currentTextID.val(“缺席”);
}
确保在页面上链接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";
}

这是可行的,但当我点击复选框时,勾号仅保留毫秒,textbox的值再次更改为其原始值。您是否使用javascript中的setinterval方法每秒刷新一次页面?我在1小时前进行了更改,但仍然在页面上进行了更改。我认为您的其他代码中存在一些问题。当我删除Autopostback=true时,它会工作。很酷…它已经从我的答案中删除,您只需复制/粘贴即可。顺便说一句,您的问题已解决。:)谢谢您的回答,但textbox的值并没有改变。