0

これに関連する他の投稿を 2 つ見たことがありますが、コードに関連する疑問があります。どうぞよろしくお願いします。

テキストボアとドロップダウンリスト、およびいくつかのカスタムバリデータを持つユーザーコントロールがあります。ユーザー コントロールは、コードによって動的に追加されます。

ユーザーコントロール自体の中にドロップダウンリストをロードするために、次のコードを使用しています

protected void Page_Load(object sender, EventArgs e)
    {            
        ddl_RRC.DataSource = dicRC_Desc;
        ddl_RRC.DataTextField = "value";
        ddl_RRC.DataValueField = "key";
        ddl_RRC.DataBind();

        txtRC.Text = Request.Form[txtRC.UniqueID];   //To retain the value of text box         
    }

Page_Init でユーザー コントロールを動的に追加しています

 protected void Page_Init(object sender, EventArgs e)
    {
        if (GetPostBackControl(this) == "btnNewRow")
        {
            custControlCountID++;
        }
        for (int i = 0; i < custControlCountID; i++)
        {
            RejRow customControl = (RejRow)LoadControl("~/RejRow.ascx");
            customControl.ID = "rejRow" + i;
            divHolder.Controls.Add(customControl);
        }
    }

Viewstate は、テキスト ボックスとドロップダウン リストの両方で有効になっています。Page_Init にコントロールを追加する際に同じ ID を使用しているため、コントロールがビューステートから値を取得しないのはなぜですか?

4

1 に答える 1

0

DropDownList唯一の問題は、からのすべてのポストバックでデータバインドしていることだと思いますPage_LoadIsPostback-property を確認してください。例:

protected void Page_Load(object sender, EventArgs e)
{       
    if(!IsPostBack)
    {     
        ddl_RRC.DataSource = dicRC_Desc;
        ddl_RRC.DataTextField = "value";
        ddl_RRC.DataValueField = "key";
        ddl_RRC.DataBind();
    }

    txtRC.Text = Request.Form[txtRC.UniqueID];   //To retain the value of text box         
}

TextBox.Textただし、フォーム フィールドからプロパティを設定する必要Textがある理由はわかりませんViewState

于 2013-02-22T10:28:34.423 に答える