Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在asp.net的GridView中未选中下拉列表(UserControl)的SelectedValue_Asp.net_Gridview_User Controls - Fatal编程技术网

在asp.net的GridView中未选中下拉列表(UserControl)的SelectedValue

在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

我创建了一个Usercontrol(下拉菜单),并在GridView的EditTemplate中使用它

<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();
    }
}