我有绑定到数据库的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");
}
}
}
答案 0 :(得分:1)
据我所知,Asp.Net CheckBoxes没有名为CommandName
和CommandArgument
的属性。因此,您不能使用更改选中时将被触发的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");
}
}