Poo*_*rya 4 c# asp.net gridview code-behind readonly
我见过类似的问题,但没有一个答案帮助我解决了这个问题.我有一个带有ReadOnly字段的GridView,如下所示.
网格视图:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False" DataKeyNames="projectID"
DataSourceID="SqlDataSource1"
EmptyDataText="There are no data records to display."
PageSize="5" OnRowUpdating="GridView1_RowUpdating">
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True"/>
<asp:BoundField DataField="prID" HeaderText="prID" SortExpression="prID"/>
<asp:BoundField DataField="projectName" HeaderText="projectName"
SortExpression="projectName" />
<asp:BoundField DataField="projectType" HeaderText="projectType"
SortExpression="projectType" />
</Columns>
<EditRowStyle CssClass="GridViewEditRow"/>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,prIDBoundField具有Readonly=True属性.prID当用户更新行中的其他字段时,我正试图获取代码隐藏的值.
后台代码:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = GridView1.Rows[e.RowIndex];
String d1 = ((TextBox)(row.Cells[2].Controls[0])).Text;
String d2 = ((TextBox)(row.Cells[3].Controls[0])).Text;
// this only works while the field is not readonly
string prIDUpdate = ((TextBox)(row.Cells[1].Controls[0])).Text;
}
Run Code Online (Sandbox Code Playgroud)
注意:我已经尝试过使用,GridView1.DataKeys[e.RowIndex]并且onRowDataBound只在代码隐藏中设置了BoundField就绪,但我无法获得结果
提前致谢!
Ali*_*ice 15
我看到GridView控件中的DataKeyNames设置是这样的
DataKeyNames="projectID"
Run Code Online (Sandbox Code Playgroud)
然后我猜你的关键名是projectID而不是prID,不是吗?如果是这样,您可以获取所选行的数据作为此行:
string id = GridView1.DataKeys[e.RowIndex]["projectID"].ToString();
Run Code Online (Sandbox Code Playgroud)
您还应该添加此列:
<asp:BoundField DataField="projectID" HeaderText="prID" SortExpression="projectID"/>
Run Code Online (Sandbox Code Playgroud)
你试过吗?
换句话说,您可以尝试使用TemplateField
<Columns>
<asp:TemplateField HeaderText="prID" SortExpression="prID">
<ItemTemplate>
<asp:Label ID="lblPrId" runat="server" Text='<%# Bind("prID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="projectName" HeaderText="projectName"
SortExpression="projectName" />
<asp:BoundField DataField="projectType" HeaderText="projectType"
SortExpression="projectType" />
</Columns>
Run Code Online (Sandbox Code Playgroud)
此代码从GridView1_RowUpdating事件处理程序中的prID列获取数据:
Label lblPrId = row.FindControl("lblPrId") as Label;
string prId = lblPrId .Text;
Run Code Online (Sandbox Code Playgroud)
对不起,如果这没有帮助.
| 归档时间: |
|
| 查看次数: |
45005 次 |
| 最近记录: |