一日中困惑している Gridview に完全に問題があります。私は Gridviews をあまり使用しないので、これのいくつかは私を混乱させ、Google は私が望んでいたほどの助けにはなりませんでした。
LINQ を介して作成されたオブジェクトをグリッドビューにバインドしてから、更新しようとしています。
XAML:
<asp:GridView runat="server" ID="GV1"
onrowediting="gridViewUsers_RowEditing"
onrowcancelingedit="gridViewUsers_RowCancelingEdit"
onrowdeleting="gridViewUsers_RowDeleting"
onrowupdating="gridViewUsers_RowUpdating"
>
<Columns>
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>
コード:
private void BindGrid()
{
List<Room> stuff = new List<Room>();
Hotel = dc1.Rooms.ToList();
GV1.DataSource = Hotel;
GV1.DataBind();
}
protected void gridViewUsers_RowEditing(object sender, GridViewEditEventArgs e)
{
GV1.EditIndex = e.NewEditIndex;
BindGrid();
}
選択した行から Room オブジェクトを取得し、LINQ を介してデータベースに更新したいだけです。しかし、私はそのオブジェクトを手に入れることができないようです。私の次の試みは、行から各エントリを取得することでした。それで、以下の例のようなコードを見つけました。しかし、すべてがヌルです。
protected void gridViewUsers_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string tenant = ((TextBox)(GV1.Rows[e.RowIndex].FindControl("Tenant"))).Text;
string age = ((TextBox)(GV1.Rows[e.RowIndex].FindControl("Age"))).Text;
string roomno = ((TextBox)(GV1.Rows[e.RowIndex].FindControl("Room_No"))).Text;
BindGrid();
}