在gridview中填充下拉列表的方法

时间:2015-11-05 07:07:08

标签: asp.net

如果我想在DropdownList中填充GridView,那么最好的方法是什么?使用GridView 'OnRowDataBound'事件并每次向db获取查询或首先获取所有数据并将其放在数据表上并从此数据表中继续工作?

1 个答案:

答案 0 :(得分:0)

由于您的问题不清楚您的要求,我假设您希望使用dropdownlist使用Gridview gridview事件绑定OnRowDataBound

以下是步骤: -

  1. DropDownList ItemTemplate TemplateField <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound"> <Columns> <asp:BoundField HeaderText="Name" DataField="ContactName" /> <asp:TemplateField HeaderText = "Country"> <ItemTemplate> <asp:Label ID="lblCountry" runat="server" Text='<%# Eval("Country") %>' Visible = "false" /> <asp:DropDownList ID="ddlCountries" runat="server"> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>中,在您的aspx页面中添加Gridview HTML。
  2. gridview

    然后,您需要将 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GridView1.DataSource = GetData("SELECT ContactName, Country FROM Customers"); GridView1.DataBind(); } } private DataSet GetData(string query) { string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; SqlCommand cmd = new SqlCommand(query); using (SqlConnection con = new SqlConnection(conString)) { using (SqlDataAdapter sda = new SqlDataAdapter()) { cmd.Connection = con; sda.SelectCommand = cmd; using (DataSet ds = new DataSet()) { sda.Fill(ds); return ds; } } } } 与来自数据库的记录绑定。

    OnRowDataBound

    然后protected void OnRowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { //Find the DropDownList in the Row DropDownList ddlCountries = (e.Row.FindControl("ddlCountries") as DropDownList); ddlCountries.DataSource = GetData("SELECT DISTINCT Country FROM Customers"); ddlCountries.DataTextField = "Country"; ddlCountries.DataValueField = "Country"; ddlCountries.DataBind(); //Add Default Item in the DropDownList ddlCountries.Items.Insert(0, new ListItem("Please select")); //Select the Country of Customer in DropDownList string country = (e.Row.FindControl("lblCountry") as Label).Text; ddlCountries.Items.FindByValue(country).Selected = true; } } 的代码将如下所示: -

    Intent intent = new Intent(activity1.this, activity2.class);
    intent.putExtra("key", keyId);
    startActivity(intent);
    

    请参阅Reference link以供参考

    另请参阅Working demo以供参考

    希望有所帮助。