ASP:NET - GridVIEW - DropDownList selectedvalue

时间:2016-06-29 08:14:27

标签: asp.net

我是这个论坛的新人,虽然我已经通过多年寻找答案。现在,我希望你帮助解决问题。我正在关注此link以在我的网格中制作我自己的DropDown列表并且正常工作直到这一行:

ddlCities.Items.FindByValue(country).Selected = True

在这里,我有错误:

  

对象引用未设置为对象的实例。

但我的代码在受影响的字段中是正确的:

这是Code Behind中的相关代码:

Protected Sub RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow AndAlso grdLinea.EditIndex = e.Row.RowIndex; 

        Dim ddlCities As DropDownList = DirectCast(e.Row.FindControl("ddlFacturarA"), DropDownList)


        ' Create the command with the sproc name and add the parameter required'
        ddlCities.DataSource = GetData("select UPPER(DSCA_ZONA)as Zona from tb_personal  where dsca_Zona <> 'NULL'group by dsca_zona order by dsca_zona")
        ddlCities.DataTextField = "Zona"
        ddlCities.DataValueField = "Zona"
        ddlCities.DataBind()

        'Add Default Item in the DropDownList
        'ddlCountries.Items.Insert(0, New ListItem("Please select"))

        Dim country As String = Trim(CType(e.Row.FindControl("lblFacturarA"), Label).Text)
        ddlCities.Items.FindByValue(country).Selected = True

    End If
End Sub

这是设计模式中受影响的代码:

    <EditItemTemplate >
    <asp:label ID="lblFacturarA" Value ='<%# Eval("facturar_a")%>' Visible ="false" runat="server" />

                <asp:DropDownList 
                    ID="ddlFacturarA"  
                    CssClass="txt"   
                    runat="server" 

                    AutoPostBack="True" ValidationGroup="rfNewLineEmpty">
                </asp:DropDownList>



                <asp:RequiredFieldValidator 
                    ID="rfNewLineFacturarA" 
                    runat="server" 
                    ErrorMessage="Obligatorio" 
                    ValidationGroup="rfNewLine" 
                    SetFocusOnError="True" 
                    ControlToValidate="ddlFacturarA">
                </asp:RequiredFieldValidator>
</EditItemTemplate> 

我知道我是ASP.NET的新手,也许我顺便失去了一些东西,但是我已经将这段代码绕了两天而且看不到光。

你能告诉我一些关于这个错误的原因吗?

如果您需要更详细的信息来解决这个问题,请告诉我。

提前致谢

2 个答案:

答案 0 :(得分:0)

如果您确定错误在ddlCities.Items.FindByValue(country).Selected = True上且country项在下拉列表中,我建议您仔细检查下拉列表项中是否有空格或大小写差异,国家变量。
因为FindByValue找到了确切的项目并且区分大小写。
您应该尝试使用changin查询到RTRIM(LTRIM(UPPER(DSCA_ZONA))) as Zona

ddlCities.Items.FindByValue(country.ToUpper()).Selected = True

答案 1 :(得分:0)

对不起,因为我在外面的延迟,我想我已经用这种方式解决了

Dim country As String = Trim(CType(e.Row.FindControl(&#34; lblFacturarA&#34;),Label).Text) ddlCities.Items.Insert(0,country)

现在它工作正常,您认为这是一种有效的方法吗?

非常感谢!!!