在asp.net的GridView中未选中下拉列表(UserControl)的SelectedValue
我创建了一个Usercontrol(下拉菜单),并在GridView的EditTemplate中使用它在asp.net的GridView中未选中下拉列表(UserControl)的SelectedValue,asp.net,gridview,user-controls,Asp.net,Gridview,User Controls,我创建了一个Usercontrol(下拉菜单),并在GridView的EditTemplate中使用它 <EditItemTemplate> <eluc:AddrType ID="ucIssuingAuthorityEdit" runat="server" AddressType="139" AddressList='<%# PhoenixRegistersAddress.ListAddress("139") %>' AppendDataBound
<EditItemTemplate>
<eluc:AddrType ID="ucIssuingAuthorityEdit" runat="server" AddressType="139" AddressList='<%# PhoenixRegistersAddress.ListAddress("139") %>'
AppendDataBoundItems="true" CssClass="dropdown_mandatory" SelectedAddress='<%# DataBinder.Eval(Container,"DataItem.FLDISSUINGAUTHORITY") %>' />
</EditItemTemplate>
这里是属性SelectedAddress
public string SelectedAddress
{
get
{
return ddlAddressType.SelectedValue;
}
set
{
if (value.Trim().Equals(""))
return;
_selectedValue = Int32.Parse(value);
foreach (ListItem item in ddlAddressType.Items)
{
if (item.Value == _selectedValue.ToString())
{
item.Selected = true;
break;
}
}
}
}
有人能告诉我为什么会这样吗
提前感谢。您是否已获得链接到数据源的选定地址 然后让ddlist链接到第二个数据源,告诉它您希望它显示什么,在本例中,我希望显示所有内容。然后在此数据源中,您需要将所选参数更改为所选地址的下拉列表 这就是我用vb做我的工作的方式,我不太确定它如何与C im affraid一起工作,但至少你有一个起点:)
如果您需要更多帮助,请告诉我,我会看看我能做些什么。最终我得到了解决方案,并在这里提供相同的解决方案供其他人参考 在GridView的RowDataBound()方法中,我获取该DataItem的DataRowView,并将UserControl的SelectedValue设置为DataField 这是密码
protected void gv_RowDataBound(Object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
UserControlXXX ucXXX = (UserControlXXX)e.Row.FindControl("ucXXXEdit");
DataRowView drv = (DataRowView)e.Row.DataItem;
if (ucXXX != null) ucXXX.SelectedXXX = drv["FLDXXXCODE"].ToString();
}
}
您是在每次回发时绑定GridView,还是仅在
时绑定!Page.IsPostback
?在每次回发中,我都会绑定它。您在GridView中的SelectedAddress设置在哪里?@Asr:您不应该在每次回发时加载页面时绑定GridView,这将防止触发事件并导致SelectedValue丢失。你为什么这么做?需要时,应该使用事件而不是页面加载来重新绑定网格。我已将GridView的EnableViewState属性设置为false。因此,我必须在每次回发中绑定GridView。
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:IWSRiskAssessmentConnectionString3 %>"
SelectCommand="SELECT * FROM [tblCompany] WHERE ([compDataID] LIKE '%' + @compDataID + '%')">
<SelectParameters>
<asp:ControlParameter ControlID="CompanyDD" DefaultValue="%" Name="compDataID" PropertyName="SelectedValue"
Type="String" />
</SelectParameters>
</asp:SqlDataSource>
protected void gv_RowDataBound(Object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
UserControlXXX ucXXX = (UserControlXXX)e.Row.FindControl("ucXXXEdit");
DataRowView drv = (DataRowView)e.Row.DataItem;
if (ucXXX != null) ucXXX.SelectedXXX = drv["FLDXXXCODE"].ToString();
}
}