[英]C# Asp.Net changing DataSource for GridView using DropDownList
[英]how to assign a datasource to a dropdownlist inside a repeater in a gridview ASP.net with C#
這是我的aspx頁面:我想將一列綁定到Dropdownlist,但在后端代碼中找不到Repeater(“ Repeater1”)。 請幫忙 !
<asp:GridView ID="gridViewAllotment" CssClass="table table-striped" runat="server"
AutoGenerateColumns="false" GridLines="None" BorderColor="#999999"
BorderStyle="Groove">
<Columns>
<asp:TemplateField HeaderText="Traffic Police">
<ItemTemplate>
<%# Eval("U_Name") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Traffic Junction">
<ItemTemplate>
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound = "Test">
<ItemTemplate>
<asp:DropDownList ID="ddl_TrafficJunction" runat="server" DataTextField="Junction">
</asp:DropDownList>
</itemTemplate>
</asp:Repeater>
</itemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
這是后端代碼:
公共局部類JunctionAllotment:System.Web.UI.Page {受保護的無效Page_Load(對象發送者,EventArgs e){gridViewAllotment.DataSource = AllotmentLogic.SelectAllTrafficPolices();
gridViewAllotment.DataBind();
Repeater1.DataSource = RepSource();
Repeater1.DataBind();
}
public List<string> RepSource()
{
DataTable data = (DataTable)AllotmentLogic.SelectAllTrafficPolices();
var j = data.Rows.Count;
List<string> rep = new List<string>();
for (int i = 0; i < j ; i++)
{
rep.Add(i.ToString());
}
return rep;
}
public void FillDropdown(DropDownList ddl)
{
DataTable dt = AllotmentLogic.SelectTrafficJunction();
foreach (DataRow row in dt.Rows)
{
if (row["TrafficJunction_Name"].ToString() != null)
{
ddl.Items.Add(row["TrafficJunction_Name"].ToString());
}
}
}
在后端代碼中,它說“ Repeater1”在當前上下文中不存在。
這段代碼非常值得懷疑。 這段代碼說GridView
每行需要一個或多個DropDownLists
<asp:TemplateField HeaderText="Traffic Junction">
<ItemTemplate>
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound = "Test">
<ItemTemplate>
<asp:DropDownList ID="ddl_TrafficJunction" runat="server"
DataTextField="Junction">
</asp:DropDownList>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:TemplateField>
我認為這與您要執行的操作更加一致:
<asp:TemplateField HeaderText="Traffic Junction">
<ItemTemplate>
<asp:DropDownList ID="ddl_TrafficJunction" runat="server"
DataTextField="Junction">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
然后在后面的代碼中(對VB不好意思-但是C#應該足夠簡單以進行轉換)
Private Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim ddl As DropDownList = e.Row.FindControl("ddl_TrafficJunction")
ddl.DataSource = CType(AllotmentLogic.SelectTrafficJunction(), DataTable)
ddl.DataBind()
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.