1

次の方法でデータを取得する Gridview があります。

internal void updateGrid()
{
    List<String> data = dt.getAlldata(UserID(), ListID());
    gridViewer.DataSource = data;
    gridViewer.DataBind();
}

ボタンをクリックすると、データベースが更新され、新しいデータが表示されます。すべて正常に動作します。

次に、文字列をユーザー コントロールに置き換える必要があります。

internal void updateGrid()
{
    List<String> data = dt.getAlldata(UserID(), ListID());
    gridViewer.DataSource = data;
    gridViewer.DataBind();

    for (int i = 0; i < gridViewer..Rows.Count; i++)
    {
        UCControl dum = (UCControl)LoadControl("~/UCControl.ascx");
        dum.SetData(gridViewer.Rows[i].Cells[0].Text, false);
        gridViewer.Rows[i].Cells[0].Controls.Clear();
        gridViewer.Rows[i].Cells[0].Controls.Add(dum);
    }
}

最初の Page_Load() の後、すべてが正しく表示されます。しかし、ボタンをクリックしても、ユーザーコントロールは再描画されません。データは内部に正しく設定されていますが、更新されません。

このコントロールはクライアント側の UserInputs で JavaScript によって反応するため、すべての Usercontrol は、によって設定された独自の ID を持っています。

this.ID = "UCControl" + data[0];

data[0] は一意ですが、プロセス全体で認識されています。

UserControl が再描画されない理由を教えてもらえますか? またはそれ以上: Usercontrols に更新を指示するにはどうすればよいですか?

4

1 に答える 1