1

これは GridView Update であり、構文の問題はありません。

更新後((TextBox)GridView1.Rows[e.RowIndex].FindControl("txt")).Text; 、同じテキストが返され、何も変更されませんテキストボックスの更新モードで入力したテキストを取得できません

例: テキストがある場合 -someText

更新で入力しました-newText

最後に戻ります-someText

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) {
    int id = Convert.ToInt32((GridView1.Rows[e.RowIndex].FindControl("Label1ID") as Label).Text);
    PersonData data = (from x in Domain.Instance.PersonDatas
                                         where x.ID == id
                                         select x).First();

    data.Info = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txt")).Text;
    data.Info1 = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txt1")).Text;
    data.Info2 = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txt2")).Text;

    Domain.Instance.SaveChanges();

    GridView1.EditIndex = -1;
    DatBind();
}

プロパティがあります:

  <asp:TemplateField HeaderText="Info">
                    <EditItemTemplate>
                        <asp:TextBox ID="txt" runat="server" Text='<%# Eval("Info") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="LabelInfo" runat="server" Text='<%# Eval("Info") %>'></asp:Label>
                    </ItemTemplate>
  </asp:TemplateField>
4

1 に答える 1

2

問題はグリッドビューのバインドにあると思います。
ページの読み込み時にグリッドビューをバインドしないでください。
次のようになります

 if(!IsPostBack)  /// <<<<<<<<<<
 {
    GridView1.DataSource = yourDataSource;
    GridView1.DataBind();
 }
于 2013-03-06T17:31:14.663 に答える