|
查看: 1229|回复: 9
|
关于asp.net data grid 的问题,希望有人能帮我
[复制链接]
|
|
|
我把一column data convert 去 item template, 变去 text box 了,然后enable = false,
过后我又加个button,
要怎样才能用button 把data grid 里面的text box 变去enable = true? 或怎样才能拿到那个text box 的ID ?
谁可以帮我解答?谢谢 |
|
|
|
|
|
|
|
|
|
|
发表于 12-4-2008 07:27 PM
|
显示全部楼层
如果只是把button 弄 enabled 的话,其实不需要在 postback 回 后台。。
用javascript 就可以了。。 你可以view src 看asp.net 把那些 textbox assign 了什么 dom 的id , 然后 用 javascript 的 getelementbyid , 然后换它的 property 就可以了。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 12-4-2008 07:50 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 2-7-2008 06:52 PM
|
显示全部楼层
最好是用javascript来control
不然如果很多data的话,会很慢
首先用
document.getElementByTagName("input")
然后loop through 这些input , 找出type = text
when it is found, then set to disabled |
|
|
|
|
|
|
|
|
|
|
发表于 3-7-2008 03:41 AM
|
显示全部楼层
我以GridView演示以下功能。DataGrid的应用方法相同。
首先,假设我的ASPX文件有以下的GridView
- <asp:GridView ID="grvMyGridView" runat="server" AutoGenerateColumns="False" DataKeyNames="QuestionID"
- DataSourceID="odsMyGridView">
- <Columns>
- <asp:TemplateField>
- <ItemTemplate>
- <asp:TextBox ID="txtMyTextBox" runat="server" Enabled="false"></asp:TextBox>
- </ItemTemplate>
- </asp:TemplateField>
- <asp:TemplateField>
- <ItemTemplate>
- <asp:Button ID="btnEnableTextBox" runat="server" Text="Enable Textbox" OnCommand="EnableTextBox" />
- </ItemTemplate>
- </asp:TemplateField>
- </Columns>
- </asp:GridView>
复制代码
现在在Code-Behind, 用以下的Code找出指定TextBox所在的的GridViewRow的Index
-
- Protected Sub grvMyGridView_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grvMyGridView.RowDataBound
- If e.Row.RowType = DataControlRowType.DataRow Then
- Dim intRowIndex As Integer = e.Row.RowIndex
- Dim btnEnableTextbox As Button = e.Row.Cells(1).FindControl("btnEnableTextbox")
- btnEnableTextbox.CommandArgument = intRowIndex.ToString
- End If
- End Sub
复制代码
注意以上的Code:
1. e.Row.RowIndex是找出每一个Row的Index.
2. e.Row.Cells(ColumnNumber)是找出你的Button的位置。从0 算起。我的Button在第二个Column, 所以Index是1。
3. 找出Button后, 把Button的CommandArgument的值设定成在第一步所找出的RowIndex。
下来,我们要对于每一个Button的OnCommand Event做出反应。
-
- Protected Sub EnableTextbox(ByVal sender As Object, ByVal e As CommandEventArgs)
- Dim intRowIndex As Integer = CInt(e.CommandArgument)
- Dim objRow As GridViewRow = grvMyGridView.Rows(intRowIndex)
- Dim txtMyTextBox As TextBox = objRow.FindControl("txtMyTextBox")
- txtMyTextBox.Enabled = True
- End Sub
复制代码
注意以上的Code:
1. EnableTextBox 是在ASPX文件里对于Button所设定的OnCommand的名字。整个Sub是对于Button的OnCommand做出反应,或者叫做Event Handler。
2. 用e.CommandArgument把之前对于Button设定的RowIndex的值重新读出来。
3. 找出TextBox后,把它的Enable设定成True。
希望我的解释还清楚。 |
|
|
|
|
|
|
|
|
|
|
发表于 18-7-2008 02:00 AM
|
显示全部楼层
回复 5# wooncherk 的帖子
|
不好意思突然插进来!可以把 code-behind 换成 c# 吗? 我的vb很烂,不太明白。 |
|
|
|
|
|
|
|
|
|
|
发表于 20-7-2008 11:09 AM
|
显示全部楼层
回复 6# dek 的帖子
不好意思... 我的C#也很烂... 尝试了一下... 不知道能run吗... 我还没测试... 希望没问题...- protected void grvMyGridView_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
- {
- if (e.Row.RowType == DataControlRowType.DataRow) {
- int intRowIndex = e.Row.RowIndex;
- Button btnEnableTextbox = e.Row.Cells(1).FindControl("btnEnableTextbox");
- btnEnableTextbox.CommandArgument = intRowIndex.ToString;
- }
- }
复制代码- protected void EnableTextbox(object sender, CommandEventArgs e)
- {
- int intRowIndex = (int)e.CommandArgument;
- GridViewRow objRow = grvMyGridView.Rows(intRowIndex);
- TextBox txtMyTextBox = objRow.FindControl("txtMyTextBox");
- txtMyTextBox.Enabled = true;
- }
复制代码 |
|
|
|
|
|
|
|
|
|
|
发表于 29-7-2008 11:54 AM
|
显示全部楼层
回复 7# wooncherk 的帖子
都记下了,谢谢。在做别的,还没时间试你的 code  |
|
|
|
|
|
|
|
|
|
|
发表于 1-8-2008 03:45 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 7-9-2008 04:49 PM
|
显示全部楼层
原来还有把row index丢去command argument的方法, 谢谢wooncherk的分享.  |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|