使用asp.net在gridview中选中复选框时更改div显示

时间:2017-07-29 07:36:00

标签: c# asp.net gridview checkbox

我有绑定到数据库的gridview。其中checkbox我希望更改另一个display div的{​​{1}}属性,其值为checkbox。 这是我在asp.net中的后端代码,但它不起作用!我该怎么做才能解决它?

protected void gv_sourceGalleryPic_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "checkPic")
    {
        CheckBox chkItem = (CheckBox)gv_sourceGalleryPic.FindControl("ck_checkGalleryPic_copyMove");

        if (chkItem.Checked == true)
        {
            div1.Style.Add(HtmlTextWriterStyle.Display, "block");
        }
    }
}

3 个答案:

答案 0 :(得分:1)

据我所知,Asp.Net CheckBoxes没有名为CommandNameCommandArgument的属性。因此,您不能使用更改选中时将被触发的RowCommand事件。 你应该使用一些简单的javascript代码,而不是像下面的示例代码:

function hidediv(chk) {
        var element = document.getElementById("div1");
        if (chk.checked) 
        { element.style.display = 'none'; }
    }

然后在所有复选框的更改事件上触发此函数,如下所示:

onchange="hidediv(this);"

顺便说一句,如果你只想更改显示div部分,最好使用html输入标签而不是asp.net复选框。

答案 1 :(得分:0)

尝试找到Div

HtmlGenericControl div1= (HtmlGenericControl )gv_sourceGalleryPic.FindControl("div1");

答案 2 :(得分:0)

您可以OnCheckedChanged使用checkbox事件代替onRowCommand,如下所示:

<强>标记

<asp:GridView runat="server" ID="gv_sourceGalleryPic">
  <Columns>
    <asp:TemplateField>
      <ItemTemplate>
        <asp:CheckBox ID="ck_checkGalleryPic_copyMove" runat="server"
            OnCheckedChanged="chkBox_CheckedChanged" AutoPostBack="true" />
      </ItemTemplate>
    </asp:TemplateField>
  </Columns>
</asp:GridView>

代码

protected void chkBox_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox chk = sender as CheckBox;

        if (chk.Checked)
        {
            div1.Style.Add(HtmlTextWriterStyle.Display, "block");
        }           
    }