1

テキストボックスのあるGridviewにUserControlがあります。テキストボックスはデータベース呼び出しによって入力され、ユーザーが編集して別の値を保存できます。しかし、別の値を保存しようとすると、何もありません。以下のコード:

  public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            string sql;
            sql = "select lname from clients order by lname";
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ToString());

            DataTable dt = new DataTable();
            SqlCommand cmd = new SqlCommand(sql, conn);

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);

            GridView1.DataSource = dt;
            GridView1.DataBind();
        }


    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        UserControl uc;
        TextBox tb;
        string name;

        foreach (GridViewRow row in GridView1.Rows)
        {


            uc = (UserControl)row.FindControl("UserInfo1");
            tb = (TextBox)uc.FindControl("txt_name");
            name = tb.Text; 

        }


    }



}

}

ユーザー コントロール コード:

public partial class UserInfo : System.Web.UI.UserControl
{ 

    public string Name {get;set;}

    protected void Page_Load(object sender, EventArgs e)
    {

        txt_name.Text = Name;


    }

    protected void Button1_Click(object sender, EventArgs e)
    {

        string name;

        name = this.txt_name.Text;



    }


}

}

4

1 に答える 1

1

問題はUserControlコードにあります。ポストバックかどうかに関係なく、毎回テキストをNameプロパティの値に設定しています。

代わりにこれを行う必要があります:

if(!IsPostback)
 txt_name.Text = Name;
于 2012-09-02T15:21:33.943 に答える