C#列表框到面板和链接按钮

时间:2014-01-23 07:50:28

标签: c# database list

我试过学习C#,我从数据库中创建了一个小列表。但是,如果我不想使用listbox。我如何使用Panel和linkbuttons做同样的事情?

我试过像这样但是,我无法设置 panel.DataSource = cmd.ExecuteReader(); listlb.DataSource = cmd.ExecuteReader(); 所以,我该怎么做?我必须把DataSource或ExecuteReader放在哪里?

Panel panel = new Panel();
List<LinkButton> listlb = new List<LinkButton>();

foreach (someting)
{
    LinkButton button = new LinkButton();
    button.Text = name;
    button.PostBackUrl = link
    panel.Controls.Add(button);
}

这是我的示例代码,(有效):

using (var con = new SqlConnection(@"Data Source=localhost;Initial Catalog=MyData;Integrated Security=SSPI;User ID=****;Password=****;"))
{
    string query = "SELECT name, link FROM animals";
    var cmd = new SqlCommand(query, con);
    con.Open();

    var list = new ListBox();

    list.DataSource = cmd.ExecuteReader();

    list.DataTextField = "name";
    //list.DataValueField = "link";
    list.DataBind();
    Controls.Add(list);
}

想法是,当我点击名称时,它会打开网址。

2 个答案:

答案 0 :(得分:1)

这可以让你添加没有ListBox的控件

using (var dReader = cmd.ExecuteReader()) {
    if (dReader != null) {
        while (dReader.Read()) {
            LinkButton btn = new LinkButton();
            //You should change the offset if you want to edit the query
            //In your case 0 is name and 1 is link
            btn.Text = dReader.GetString(0);
            btn.PostBackUrl = dReader.GetString(1);
            panel.Controls.Add(btn);
        }
    }
}

答案 1 :(得分:0)

是的,打算这样做,

  

考虑将foreach中的链接按钮添加到Panel。

但是如果我不使用新的 ListBox(); ,我将保存 cmd.ExecuteReader();

var list = new ListBox(); // I replace this with what?
list.DataSource = cmd.ExecuteReader();

foreach(object item in Listbox)
{
   LinkButton btn = new LinkButton();
   btn.Text = item.name;
   btn.PostBackUrl = item.link;
   panel.Controls.Add(btn);
}
Controls.Add(panel);

这是我的问题。我不知道在哪里需要保存 cmd.ExecuteReader 。我没有很多C#代码。 Someting.DataSource = cmd.ExecuteReader();