0

SQL クエリを使用してボタンを動的に作成しています。

private void createPagingButtons(DateTime firstDayofWeek, DateTime lastDayofWeek)
{
    int i = 1;
    //get query that holds all of the names for a date range
    SqlDataReader returnedQuery = getDefaultUser(firstDayofWeek, lastDayofWeek);
    while (returnedQuery.Read())
    {
        string buttonName = returnedQuery["Person"].ToString();
        string[] splitString = buttonName.Split('(');
        Button btn = new Button();
        btn.ID = buttonName;
        btn.Click += new EventHandler(btn_Click);
        btn.Text = splitString[0];
        btn.Width = Convert.ToInt32(splitString[0].Length)*9;
        btn.CssClass = "dynamicButtons";
        pagingPanel.Controls.Add(btn);
        i++;
    }
}

このため、ASP.NET 側で静的な特定の名前はありません。ポストバックで、クリックされたものを button.focus() したいと思います。

どうすればこれを達成できますか?

4

1 に答える 1

0

btn_Click()、ページ レベルの変数 (例: this.clickedButtonId) を ID に設定してから、次のようにcreatePagingButtons()呼び出しbtn.Focus()ますbtn.ID==clickedButtonId

string clickedButtonId;

private void createPagingButtons(DateTime firstDayofWeek, DateTime lastDayofWeek)
{
    int i = 1;
    SqlDataReader returnedQuery = getDefaultUser(firstDayofWeek, lastDayofWeek);
    while (returnedQuery.Read())
    {
        string buttonName = returnedQuery["Person"].ToString();
        Button btn = new Button();
        btn.ID = buttonName;
        btn.Click += new EventHandler(btn_Click);              
        //...
        pagingPanel.Controls.Add(btn);

        if (btn.ID==this.clickedButtonId) btn.Focus();

        i++;
    }
}

private void btn_Click(object s, EventArgs e)
{
   this.clickedButtonId = ((Button) s).ID;
}
于 2013-09-19T18:49:33.973 に答える