动态创建按钮以调用方法并传入参数

Ron*_*ald 5 c# asp.net

我有一个密钥值对的字典和需要通过对循环和为每一个及导线上按钮调用一个方法DisplayDocument(字符串ID),并通过在密钥作为参数创建一个按钮.

这是我到目前为止所拥有的.

        // test data
        var documents= new Dictionary<string,string>();
        documents.Add("69110","Diploma");
        documents.Add("76404", "Licensure");


        foreach (KeyValuePair<string, string> item in documents)
        {

            MyStringBuilder=MyStringBuilder.Append(item.Value + "   " + item.Key + "<br />"); 

        }
        printFaxDocuments.InnerHtml = MyStringBuilder.ToString();
Run Code Online (Sandbox Code Playgroud)

我想要做的是打印文档键和值,然后打印一个按钮,用户可以单击该按钮查看文档.我有为查看文档而构建的方法,它需要传入Key值.我该怎么做?

我不确定如何在文本数据中穿插按钮.我需要写出键和值添加按钮添加a "<br/>"然后再次为字典中的下一项做同样的事情.

jda*_*ies 4

下面我在 OnInit 方法中创建了 Button 控件,并为每个控件分配了相同的 Click 事件处理程序。

Key 存储在 Buttons CommandArgument 属性中,该属性在事件处理程序中检索并传递给 DisplayDocument 方法。

protected override void OnInit(EventArgs e)
{
    // test data
    var documents = new Dictionary<string, string>();
    documents.Add("69110", "Diploma");
    documents.Add("76404", "Licensure");

    foreach (KeyValuePair<string, string> item in documents)
    {
        Button button = new Button();
        button.Text = string.Format("Button: {0}", item.Key);
        button.CommandArgument = item.Key;
        button.Click += ButtonClicked;

        ButtonContainer.Controls.Add(button);
    }

    base.OnInit(e);
}

protected void ButtonClicked(object sender, EventArgs e)
{
    Button button = (Button) sender;
    string id = button.CommandArgument;

    DisplayDocument(id);
}

private void DisplayDocument(string id)
{
    //Do something
}
Run Code Online (Sandbox Code Playgroud)

编辑

您最好使用 CSS 设置按钮的布局。

尝试将以下 CSS 类添加到页面的头部(或样式表文件)

<style type="text/css">
    .stacked-button
    {
        display:block;
    }
</style>
Run Code Online (Sandbox Code Playgroud)

然后将以下内容添加到按钮创建代码中:

button.CssClass = "stacked-button";
Run Code Online (Sandbox Code Playgroud)

然后,您可以根据需要添加到 CSS 类来修改布局(边距等)

希望这可以帮助。