日期:2014-05-18  浏览次数:20374 次

获取datagrid中动态控件的ID,在线等
问题如下:
<asp:datagrid id="dg1" AutoGenerateColumns="False" Width="100%" BorderColor="#d4d0c8" BorderStyle="Solid"
Runat="server">
<Columns>
<asp:BoundColumn DataField="word">
<HeaderStyle BackColor="#D0E7F5"></HeaderStyle>
<ItemStyle BackColor="White"></ItemStyle>
</asp:BoundColumn>
<asp:TemplateColumn HeaderText="Word">
<HeaderStyle BackColor="#D0E7F5"></HeaderStyle>
<ItemStyle BackColor="White"></ItemStyle>
<ItemTemplate>
<input type=text class=inputp id="c1<%#container.dataitem("id")%>" value="<%=Request.Form("")%>">
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>

因为datagrid控件中的值是在客户端添加的,所以我想采用value="<%=Request.Form("")%>">的方式让它在页面刷新时值不会丢失,但是不知道怎么获得这个控件自身的ID,在javascrpit脚本中可以通过this.id的方法,不知道在asp.net中有没有相对应的方法呢?

------解决方案--------------------
为什么不把input换成TextBox,这样会好实现一些吧
如果是TextBox
GridView1.Rows[e.Row.RowIndex].FindControl("c1")
就可以取到值了;
------解决方案--------------------
C# code


dg1.Items[i].Cells[j].Controls[k].ClientID;

------解决方案--------------------
C# code
((RadioButtonList)DaLPanduan.Items[a].FindControl("RadPanduan"))

------解决方案--------------------
用textbox可以,你刷新时,是因为你datagrid的数据源根本就没有你你添的那值,如果在刷新后,datagrid没绑定前,你把这个值得到,更新你的数据源,将datagrid的datasource置为新数据源,那值就会有了。
象你这样必须在后台用一个ViewState记录你的数据源,在每次postback时,你都要遍历datagrid将改变、新添的那个置更新到你的viewstate里,再将viewstate付给datagrid