大家帮我看看下面的代码有什么问题?
<asp:TemplateColumn>
<ItemTemplate>
<asp:DropDownList ID="Category" Runat=server DataSource='<%# GetCategory()%>' SelectedIndex='<%#GetCategorySelectedItem((DropDownList)sender,DataBinder.Eval(Container, "DataItem.CategoryId").ToString())%>'>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>//用于通过ID设置下拉列表框的index
protected int GetCategorySelectedItem(DropDownList ddlCategory,string iCategoryId)
{
int i = 0;
for(i=0;i<ddlCategory.Items.Count;i++)
if (ddlCategory.Items[i].Value == iCategoryId)
{
break;
}
return i;
}问题在于后台代码中我得到的DropDownList.Items.Count为0,显然是我得到的这个DropDownList不对,数据源没有问题。
<asp:TemplateColumn>
<ItemTemplate>
<asp:DropDownList ID="Category" Runat=server DataSource='<%# GetCategory()%>' SelectedIndex='<%#GetCategorySelectedItem((DropDownList)sender,DataBinder.Eval(Container, "DataItem.CategoryId").ToString())%>'>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>//用于通过ID设置下拉列表框的index
protected int GetCategorySelectedItem(DropDownList ddlCategory,string iCategoryId)
{
int i = 0;
for(i=0;i<ddlCategory.Items.Count;i++)
if (ddlCategory.Items[i].Value == iCategoryId)
{
break;
}
return i;
}问题在于后台代码中我得到的DropDownList.Items.Count为0,显然是我得到的这个DropDownList不对,数据源没有问题。
Dim mydrop As DropDownList
mydrop = CType(e.Item.FindControl("Category"), DropDownList)
mydrop.SelectedIndex = mydrop.Items.IndexOf(mydrop.Items.FindByValue(Convert.ToString(e.Item.Cells("CategoryId").Text)))