marquesgabriel Ответов: 0

Sqldatasource внутри gridview


или в последние дни я пытался найти решение своей проблемы, но до сих пор не мог. У меня есть Gridview, в котором в режиме редактирования одно из полей имеет выпадающий список людей, который заполняется выбором, использующим два других поля этой строки (штат и город). Я перепробовал все, что нашел в интернете, и не смог заставить его работать. Можете ли вы помочь мне, пожалуйста? Код ниже

<asp:GridView ID="GridView1" runat="server" AllowSorting="True"  

        DataKeyNames="id,Municipio,UF" DataSourceID="SqlDataSource5">
        <AlternatingRowStyle BackColor="White" />
        <Columns>
            <asp:CommandField ShowEditButton="True" />
            ...stuff...
            <asp:TemplateField HeaderText="UF" SortExpression="UF">
                <EditItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("UF") %>'>
                    </asp:Label>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("UF") %>'>
                    </asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Municipio" SortExpression="Municipio">
                <EditItemTemplate>
                    <asp:Label ID="Label2" runat="server" Text='<%# Eval("Municipio") %>'></asp:Label>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("Municipio") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="People" SortExpression="People">
                <ItemTemplate>
                    <asp:Label ID="LbPeople" runat="server" Text='<%# Bind("Cultura") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:DropDownList ID="DdlPeople" runat="server" AutoPostBack="true" 

                        DataSourceID="SqlDataSourcePeopleEdit" DataTextField="People" 

                        DataValueField="People">
                    </asp:DropDownList>
                    <asp:HiddenField ID="Hidden1" Value='<%# Bind("Municipio") %>' runat="server"/>
                    <asp:HiddenField ID="Hidden2" Value='<%# Bind("UF") %>' runat="server"/>
                    <asp:SqlDataSource ID="SqlDataSourcePeopleEdit" runat="server" 

                        ConnectionString="<%$ ConnectionStrings:dbdb %>" 

                        ProviderName="<%$ ConnectionStrings:somar.ProviderName %>"

                        SelectCommand="SELECT People FROM Table_People WHERE (Cidade = @Municipio) AND (UF = @UF)"

                        CancelSelectOnNullParameter="false">
                        <SelectParameters>
                            <asp:ControlParameter ControlID="Hidden1" Name="Municipio" PropertyName="Value" Type="String" />
                            <asp:ControlParameter ControlID="Hidden2" Name="UF"        PropertyName="Value" Type="String" />
                        </SelectParameters>
                    </asp:SqlDataSource>
                </EditItemTemplate>
            </asp:TemplateField>
       ...stuff...     
    </asp:GridView>


Что я делаю не так?

Что я уже пробовал:

Когда я нажимаю кнопку Изменить, выпадающий список не загружает значения. И если я установлю свойство CancelSelectOnNullParameter= "false" на SqlDataSource, он покажет "должен объявить скалярную переменную @xxx", я проверил скрытые поля, и у них есть загруженные значения, так что проблема в том, что controlparameter taht не получает от него значения

0 Ответов