在gridview中找不到下拉列表
本文关键字:下拉列表 找不到 gridview | 更新日期: 2023-09-27 18:10:08
我试图将下拉列表绑定到数据集,但我在DDL处获得空值。当我在EDIT模式下单击一行时,DDL不会绑定,因为我找不到它。为什么我不会找到行下拉列表并绑定它们??
using (var scTyche = new SqlConnection(ConfigurationManager.ConnectionStrings["KondorConnectionConnectionString"].ConnectionString))
{
foreach (GridViewRow row in GridView1.Rows)
{
var ddl = (DropDownList)row.FindControl("DropDownListFolders1");
var da = new SqlDataAdapter();
var dt = new DataTable();
var ds = new DataSet();
scTyche.Open();
var cmdTyche = scTyche.CreateCommand();
cmdTyche.CommandType = CommandType.StoredProcedure;
cmdTyche.CommandText = "dbo.spGetFolders";
cmdTyche.CommandTimeout = 60;
cmdTyche.Parameters.Add("@nBranchId", SqlDbType.Int).Value = intBranchId;
da.SelectCommand = cmdTyche;
da.Fill(dt);
ds.Tables.Add(dt);
ddl.DataSource = ds;
ddl.DataTextField = "strShort";
ddl.DataValueField = "nId";
ddl.DataBind();
cmdTyche.Parameters.Clear();
scTyche.Dispose();
scTyche.Close();
}
}
我的aspx :
<asp:UpdatePanel runat="server" ID="update">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" OnRowEditing="GridView1_RowEditing"
AllowSorting="True" AutoGenerateColumns="False" SkinID="gridviewGridlinesSkin"
OnRowUpdated="GridView1_RowUpdated" OnRowUpdating="GridView1_RowUpdating" OnRowDeleted="GridView1_RowDeleted" OnRowDeleting="GridView1_RowDeleting"
EmptyDataText="No positions found">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Eval("strPositionId") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Folder" SortExpression="strFolderName">
<EditItemTemplate>
<BrummerComp:SortableDropDownList ID="DropDownListFolders1" Width="141px" runat="server"
SkinID="BCdropdownlistSkin"/>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
如果你想从后面的代码手动绑定下拉菜单,我建议你在GridView中这样做。OnDataBinding,显示数据表格。OnDataBoung,显示数据表格。OnRowDataBound事件或下拉列表。OnDataBinding,下拉。OnDataBound数据绑定事件。
现在,您可能正在尝试在错误的时间进行数据绑定-可能在一行更改为编辑模式之前?
还记得只有1行将在编辑模式-如果你使用GridView。OnRowDataBound,您可以使用事件参数(e.Row。RowState == DataControlRowState.Edit)来确定当前事件是否在编辑模式下处理一行。这将减少代码的开销并使调试更容易(潜在地隔离问题)。