Обновление БД с помощью Gridview выбранного DDL из DataSource - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть один вид сетки, который подключен через SQL Источник данных из одной таблицы, и я включил РЕДАКТИРОВАТЬ и удалить столбцы вида сетки. Когда я редактирую значение строки, столбец имеет DDL в режиме редактирования, а не текстовое поле, подключенное через другой SQL источник данных.

После загрузки страницы после нажатия на кнопку Изменить строку в Gridview, я Я выбираю другое значение из выпадающего списка и, нажав кнопку обновить, выдает ошибку, не может вставить нулевые значения в базу данных.

<%@ Page Title="" Language="C#" MasterPageFile="~/Master.Master" AutoEventWireup="true" CodeBehind="CreateRoster.aspx.cs" Inherits="E_Scheduler.CreateRoster" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <link href="CSS/Addroster.css" rel="stylesheet" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <div class="maindiv">




        <asp:GridView ID="GridView1" runat="server" ShowFooter="True" AutoGenerateColumns="False" BackColor="#

    CCCCCC" BorderColor="#999999" BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2" DataKeyNames="id" DataSourceID="SqlDataSource1" ForeColor="Black">
                <Columns>
                    <asp:CommandField ShowEditButton="True" ShowDeleteButton="True"></asp:CommandField>
                    <asp:TemplateField HeaderText="ID" InsertVisible="False" SortExpression="id">
                        <EditItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("id") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Name" SortExpression="username">
                        <EditItemTemplate>
                           <%-- <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("username") %>'></asp:TextBox>--%>
                            <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2" DataTextField="username" DataValueField="username"></asp:DropDownList>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label2" runat="server" Text='<%# Bind("username") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Date" SortExpression="r_date">
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("r_date") %>'></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label3" runat="server" Text='<%# Bind("r_date") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="From" SortExpression="from_time">
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("from_time") %>'></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label4" runat="server" Text='<%# Bind("from_time") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="To" SortExpression="to_time">
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("to_time") %>'></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label5" runat="server" Text='<%# Bind("to_time") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <FooterStyle BackColor="#CCCCCC" />
                <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
                <PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" />
                <RowStyle BackColor="White" />
                <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
                <SortedAscendingCellStyle BackColor="#F1F1F1" />
                <SortedAscendingHeaderStyle BackColor="#808080" />
                <SortedDescendingCellStyle BackColor="#CAC9C9" />
                <SortedDescendingHeaderStyle BackColor="#383838" />
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DBCS %>" DeleteCommand="DELETE FROM [roster] WHERE [id] = @id" InsertCommand="INSERT INTO [roster] ([username], [r_date], [from_time], [to_time]) VALUES (@username, @r_date, @from_time, @to_time)" SelectCommand="SELECT [id], [username], [r_date], [from_time], [to_time] FROM [roster]" UpdateCommand="UPDATE [roster] SET [username] = @username, [r_date] = @r_date, [from_time] = @from_time, [to_time] = @to_time WHERE [id] = @id">
                <DeleteParameters>
                    <asp:Parameter Name="id" Type="Int32" />
                </DeleteParameters>
                <InsertParameters>
                    <asp:Parameter Name="username" Type="String" />
                    <asp:Parameter DbType="Date" Name="r_date" />
                    <asp:Parameter Name="from_time" Type="String" />
                    <asp:Parameter Name="to_time" Type="String" />
                </InsertParameters>
                <UpdateParameters>
                    <asp:Parameter Name="username" Type="String" />
                    <asp:Parameter DbType="Date" Name="r_date" />
                    <asp:Parameter Name="from_time" Type="String" />
                    <asp:Parameter Name="to_time" Type="String" />
                    <asp:Parameter Name="id" Type="Int32" />
                </UpdateParameters>
            </asp:SqlDataSource>

            <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString='<%$ ConnectionStrings:DBCS %>' SelectCommand="SELECT [username] FROM [users]"></asp:SqlDataSource>


        </div>
    </asp:Content>

1 Ответ

0 голосов
/ 16 февраля 2020

Вам необходимо отправить НАЗАД SelectedValue вашего выпадающего списка:

Используйте это: SelectedValue='<%# Bind("username")%>' как:

<EditItemTemplate>                           
      <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2" 
           DataTextField="username" DataValueField="username" 
           SelectedValue='<%# Bind("username")%>'>
      </asp:DropDownList>
</EditItemTemplate>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...