抱歉,新注册用户,没有可用分。大家好,我遇到一个问题百思不得其解,求教大家。我要求Gridview切换到编辑模板时,ddlCompanyProvinceSn,ddlCompanyCitySn,ddlCompanyZoneSn显示当前记录的对应字段,而且这三个控件能够联动,即ddlCompanyCitySn根据ddlCompanyProvinceSn自动筛选,ddlCompanyZoneSn根据ddlCompanyCitySn自动筛选。但是当我选择ddlCompanyProvinceSn或者ddlCompanyCitySn却出现:
“/源文件”应用程序中的服务器错误。
--------------------------------------------------------------------------------Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。 
请问如何解决,谢谢。源中代码:
<td nowrap="nowrap">
                                            <asp:DropDownList ID="ddlCompanyProvinceSn" runat="server" AutoPostBack="True" 
                                                DataSourceID="SqlDataSourceProvince" DataTextField="ProvinceName" 
                                                DataValueField="ProvinceSn" 
                                                SelectedValue='<%# Bind("CompanyProvinceSn") %>' 
                                                onselectedindexchanged="ddlCompanyProvinceSn_SelectedIndexChanged">
                                            </asp:DropDownList>
                                            <asp:DropDownList ID="ddlCompanyCitySn" runat="server" AutoPostBack="True" 
                                                DataSourceID="SqlDataSourceCity" DataTextField="CityName" 
                                                DataValueField="CitySn" SelectedValue='<%# Bind("CompanyCitySn") %>'>
                                            </asp:DropDownList>
                                            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                                                ControlToValidate="ddlCompanyCitySn" Display="Dynamic" ErrorMessage="*"></asp:RequiredFieldValidator>
                                            <asp:DropDownList ID="ddlCompanyZoneSn" runat="server" 
                                                DataSourceID="SqlDataSourceZone" DataTextField="ZoneName" 
                                                DataValueField="ZoneSn" 
                                                Width="81px" SelectedValue='<%# Bind("CompanyZoneSn") %>'>
                                            </asp:DropDownList>
                                            <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                                                ControlToValidate="ddlCompanyZoneSn" Display="Dynamic" ErrorMessage="*"></asp:RequiredFieldValidator>
                                            <asp:SqlDataSource ID="SqlDataSourceProvince" runat="server" 
                                                ConnectionString="<%$ ConnectionStrings:ChashenmeConnectionString %>" 
                                                ProviderName="<%$ ConnectionStrings:ChashenmeConnectionString.ProviderName %>" 
                                                SelectCommand="SELECT '' as [ProvinceSn], '' as [ProvinceName]
union
SELECT [ProvinceSn], [ProvinceName] FROM [tblProvince]">
                                            </asp:SqlDataSource>
                                            <asp:SqlDataSource ID="SqlDataSourceCity" runat="server" 
                                                ConnectionString="<%$ ConnectionStrings:ChashenmeConnectionString %>" 
                                                ProviderName="<%$ ConnectionStrings:ChashenmeConnectionString.ProviderName %>" 
                                                SelectCommand="SELECT '' as [CitySn], '' as [CityName]
union
SELECT [CitySn], [CityName] FROM [tblCity] WHERE ([CityProvinceSn] = @CityProvinceSn)">
                                                <SelectParameters>
                                                    <asp:ControlParameter ControlID="ddlCompanyProvinceSn" Name="CityProvinceSn" 
                                                        PropertyName="SelectedValue" Type="String" />
                                                </SelectParameters>
                                            </asp:SqlDataSource>
                                            <asp:SqlDataSource ID="SqlDataSourceZone" runat="server" 
                                                ConnectionString="<%$ ConnectionStrings:ChashenmeConnectionString %>" 
                                                ProviderName="<%$ ConnectionStrings:ChashenmeConnectionString.ProviderName %>" 
                                                SelectCommand="SELECT '' as [ZoneSn], '' as [ZoneName]
union
SELECT [ZoneSn], [ZoneName] FROM [tblZone] WHERE ([ZoneCitySn] = @ZoneCitySn)">
                                                <SelectParameters>
                                                    <asp:ControlParameter ControlID="ddlCompanyCitySn" Name="ZoneCitySn" 
                                                        PropertyName="SelectedValue" Type="String" />
                                                </SelectParameters>
                                            </asp:SqlDataSource>
                                        </td>

解决方案 »

  1.   

    网上有些答案是:
    去掉
    SelectedValue='<%# Bind("CompanyCitySn") %>'
    SelectedValue='<%# Bind("CompanyZoneSn") %>'这样不会抱错,可以联动;但是Gridview切换到编辑模板时,ddlCompanyCitySn和ddlCompanyZoneSn无法显示当前记录对应的信息。
      

  2.   

    SelectedValue='<%# Eval("fieldname")%>'
      

  3.   

    看的好晕,不喜欢用这种方式绑数据。在gridview的RowEditing事件中自己写绑定方法。
      

  4.   

    或删除SelectedValue.在代码中绑定
     protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
     {
                    if ((DropDownList)e.Row.FindControl("") != null)
                    {
                        ((DropDownList)e.Row.FindControl("")).SelectedValue ="";
                    }
        }
     ((DropDownList)gv.Rows[e.RowIndex].FindControl("")).SelectedValue.Trim();
      

  5.   

    感谢 
    wuyq11(人生如梦)