次の方法でデータを取得する 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 に更新を指示するにはどうすればよいですか?