同様の質問を見たことがありますが、この問題を解決するのに役立つ回答はありませんでした。次のように、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>
ご覧のとおり、 prID
BoundField には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;
}
注:コードビハインドでのみ BoundFieldを使用GridView1.DataKeys[e.RowIndex]
および設定してみましたが、結果を取得できませんでしたonRowDataBound
前もって感謝します!