gridview中a控件控制b控件隐藏或者显示!

qiujing1208 2012-05-17 05:09:42
一个gridview控件中有控件a(button)和b(textbox)俩控件。当点击a控件时,就把该行的b控件显示出来!
...全文
201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiujing1208 2012-05-18
  • 打赏
  • 举报
回复
谢谢上面的俩位大哥!我的问题解决了,客户端控件id可以绑定数据,这样我就可以通过传id来判断控件!
孟子E章 2012-05-17
  • 打赏
  • 举报
回复
给你个完整的 例子
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser");
System.Data.DataRow dr;
dataTable1.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));
dataTable1.Columns.Add(new System.Data.DataColumn("UserName", typeof(System.String)));

for (int i = 0; i < 8; i++)
{
dr = dataTable1.NewRow();
dr[0] = i;
dr[1] = "【孟子E章】" + i.ToString();
dataTable1.Rows.Add(dr);
}

GridView1.DataSource = dataTable1;
GridView1.DataBind();
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript">
function xx(btn) {
b = btn.parentNode;
while (b.tagName != "TR") b = b.parentNode;
b.cells[0].getElementsByTagName("div")[0].style.display = b.cells[0].getElementsByTagName("div")[0].style.display == "none" ? "" : "none";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="UserId">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Panel ID="x" runat="server">
<asp:TextBox ID="replay" runat="server"></asp:TextBox>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="y" runat="server" OnClientClick="xx(this);return false;" Text="显示隐藏测试"></asp:Button>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</form>
</body>
</html>
孟子E章 2012-05-17
  • 打赏
  • 举报
回复
panel生成的是div,getElementsByTagName("div")
qiujing1208 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

button的OnClientClick="xx(this);return false;"

function xx(btn)
{
b = btn.parentNode;
while(b.tagName!="TR") b = b.parentNode;
b.cells[0].getElementsByTagName("input")[0].style.display=""
}……
[/Quote]
我这里在详细说明下。刚才所说的b控件textbox因为我这个做的留言回复,所以我把几个控件包括textbox等放到了一个panel中控制了。也就是说a现在控制panel才是对的。原来我以为textbox和panel没有什么区别,所以就简单的用textbox代替了。但是现在看到这种方法,感觉还是的比较具体详细点好!另外js知识比较差,所以也只能对上面的方法进行了照本宣科,但是没有成功!不过依然谢谢
孟子E章 2012-05-17
  • 打赏
  • 举报
回复
button的OnClientClick="xx(this);return false;"

function xx(btn)
{
b = btn.parentNode;
while(b.tagName!="TR") b = b.parentNode;
b.cells[0].getElementsByTagName("input")[0].style.display=""
}
licai1210 2012-05-17
  • 打赏
  • 举报
回复
第一种方法可以在后台动态的把b中的ClientID传人到a的onclick事件调用的函数参数里面
第二种方法可以在a点击的时候把this传过去,然后获取当前a的parentNode下面的子节点下面的b
qiujing1208 2012-05-17
  • 打赏
  • 举报
回复
自己顶下!我这里已经有了一个方法,就是设置俩个控件的CommandArgument值,然后做循环比较。当俩者的CommandArgument相等时就显示。问题是这样的循环感觉有些拖速度,所以这里求更有效率的方法。

62,050

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧