none
С#. Правка колонки gridview RRS feed

  • Вопрос

  • Здравствуйте. Подскажите как реализовать. Есть таблица gridview. В ней 2 колонки "Наименование" и "Количество". Надо открыть колонку "Количество" на редактирование, и при нажатии на кнопку под таблицей, обновить все данные в базу. gridview привязан к источнику данных sqldatasource. Это что то типа стандартных кнопок "править", "обновить" только не для каждой строки а для всей таблицы.
    • Изменено Rokstedi 15 июня 2013 г. 3:31
    • Перемещено YatajgaEditor 16 июня 2013 г. 19:38
    14 июня 2013 г. 19:00

Ответы

  • "Но теперь другая проблема, когда я прячу колонки "order_number" и "order_id" что не удается обновит колонку "order_number" так как в базе она не может быть null. Как быть?" - тогда исключите её из UpdateCommand.
    18 июня 2013 г. 5:59
    Модератор
  • с редактированием "count" разобрался. Сделал тип колонки "count" - TemplateField.

    <ItemTemplate>
    	<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("count") %>'></asp:TextBox>
    </ItemTemplate>

    На кнопку ConfirmButton повесил код:

    foreach(GridViewRow gvr in GridView1.Rows)
    {
        GridView1.UpdateRow(gvr.RowIndex, true);
    }

    Но теперь другая проблема, когда я прячу колонки "order_number" и "order_id" что не удается обновит колонку "order_number" так как в базе она не может быть null. Как быть?





    16 июня 2013 г. 9:23

Все ответы

  • Добрый день!

    По сути ваша задача достаточно тривиальна, и сводится к паре-тройке основных действий:

    1) Привязать DataGridView к DataSource: dataGridView.DataSource = ds; 

    2) Колонке "Наименование" поставить colName.ReadOnly = true; а колонке "Количество" colCount.ReadOnly = false;

    3) Заполнить источник данных.

    4) На нажатие кнопки "Обновить"(как я понял она означает "Сохранить") повесить сохранение информации в базу данных. Тут все зависит от того, какой метод работы с базой вы выбрали: Entity Framework, Dataset и т.д.

    Напишите, пожалуйста, что у вас уже сделано, и в чем конкретно возникает трудность, а мы постараемся помочь.


    15 июня 2013 г. 9:13
  • <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:myOneCDBConnectionString %>" 
            
        
            SelectCommand="SELECT [nomenclature_id], [count], [order_number], [order_id] FROM [usercart]" 
            DeleteCommand="DELETE FROM [usercart] WHERE [order_id] = @order_id" 
            InsertCommand="INSERT INTO [usercart] ([nomenclature_id], [count], [order_number]) VALUES (@nomenclature_id, @count, @order_number)" 
            UpdateCommand="UPDATE [usercart] SET [nomenclature_id] = @nomenclature_id, [count] = @count, [order_number] = @order_number WHERE [order_id] = @order_id">
            <DeleteParameters>
                <asp:Parameter Name="order_id" Type="Int32" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="nomenclature_id" Type="Int32" />
                <asp:Parameter Name="count" Type="Int32" />
                <asp:Parameter Name="order_number" Type="Int32" />
            </InsertParameters>
            <UpdateParameters>
                <asp:Parameter Name="nomenclature_id" Type="Int32" />
                <asp:Parameter Name="count" Type="Int32" />
                <asp:Parameter Name="order_number" Type="Int32" />
                <asp:Parameter Name="order_id" Type="Int32" />
            </UpdateParameters>
        </asp:SqlDataSource>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataSourceID="SqlDataSource1" 
            onselectedindexchanged="GridView1_SelectedIndexChanged" 
        ShowFooter="True" ShowHeaderWhenEmpty="True" DataKeyNames="order_id">
            <Columns>
                         <asp:BoundField DataField="nomenclature_id" HeaderText="nomenclature_id" 
                    SortExpression="nomenclature_id" />
                <asp:BoundField DataField="count" HeaderText="count" 
                    SortExpression="count"   />
                <asp:BoundField DataField="order_number" HeaderText="order_number" 
                    SortExpression="order_number" />
                <asp:BoundField DataField="order_id" HeaderText="order_id" 
                    InsertVisible="False" ReadOnly="True" SortExpression="order_id" />
            </Columns>
        </asp:GridView>
        
        <asp:Button ID="ConfirmButton" runat="server" Text="Подтвердить заказ" 
            onclick="ConfirmButton_Click" />
    Хочу колонку "count" сделать доступной для редактирования по умолчанию и при нажатии кнопки ConfirmButton обновить данные в БД
    15 июня 2013 г. 18:16
  • с редактированием "count" разобрался. Сделал тип колонки "count" - TemplateField.

    <ItemTemplate>
    	<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("count") %>'></asp:TextBox>
    </ItemTemplate>

    На кнопку ConfirmButton повесил код:

    foreach(GridViewRow gvr in GridView1.Rows)
    {
        GridView1.UpdateRow(gvr.RowIndex, true);
    }

    Но теперь другая проблема, когда я прячу колонки "order_number" и "order_id" что не удается обновит колонку "order_number" так как в базе она не может быть null. Как быть?





    16 июня 2013 г. 9:23
  • "Но теперь другая проблема, когда я прячу колонки "order_number" и "order_id" что не удается обновит колонку "order_number" так как в базе она не может быть null. Как быть?" - тогда исключите её из UpdateCommand.
    18 июня 2013 г. 5:59
    Модератор