Как обновить несколько строк, используя gridview в ASP.net на один щелчок кнопки? - PullRequest
4 голосов
/ 30 апреля 2011

Функциональное требование состоит в том, чтобы получить список студентов (3 колонки) из базы данных (SQL Server) и отобразить его на веб-странице вместе с пустым полем перед каждой строкой для ввода данных.Затем, чтобы позволить пользователю вводить оценки, набранные учащимися в тесте, и обновлять их в базе данных.

Теперь я знаю, что это можно сделать с помощью gridview, если в качестве отдельной колонки указать поле кнопки обновления.Но в этом случае перед каждым рядом будет кнопка обновления, и пользователь должен будет щелкнуть ее для каждого учащегося (более 100).Это утомительное задание для пользователя.

Я хочу, чтобы пользователь вводил отметки для всех учащихся и затем нажимал только 1 кнопку, что обновит все строки.

При событии нажатия кнопки мы можем использовать цикл foreach для GridViewRows, но, пожалуйста, помогите мне с пользовательским интерфейсом.Как сделать это возможным ??Как использовать одно нажатие кнопки вместо n кликов ??

Можно ли это сделать с помощью gridview?Или есть что-то еще, что может выполнить задачу ??

Спасибо

Ответы [ 3 ]

7 голосов
/ 30 апреля 2011

поместите текстовое поле внутри поля шаблона в четвертом столбце

<asp:TemplateField HeaderText="Marks Scored">
    <ItemTemplate>
        <asp:TextBox runat="server" ID="txtMarksScored" />
    </ItemTemplate>
</asp:TemplateField>

Затем внутри кнопки щелкните цикл событий по строкам представления сетки и получите текстовое поле для получения введенного значения.

protected void Submit_Click(object sender, EventArgs e)
{
    foreach (GridViewRow gvr in GridView1.Rows)
    {
        TextBox txtMarksScored = (TextBox)gvr.FindControl("txtMarksScored");
        // Hope you understand what to do next?
        // txtMarksScored.Text
    }
}
0 голосов
/ 25 июля 2018

Хоть и очень поздно, но, может быть, это кто-то мой ищет.Поскольку вы не упомянули ни одного условия или примера кода, поэтому я предполагаю, что ниже приведен код:

private void UpdateAllRecord()
    {
        StringBuilder query = new StringBuilder();
        for (int i = 0; i < GridViewName.Rows.Count; i++)
        {
            GridViewRow row = GridViewName.Rows[i];
            using (SqlConnection con = new SqlConnection(connStr)) //use your connection string
            {
                con.Open();
                SqlCommand cmd1 = new SqlCommand("update YourTable set  ColumnName=@ColumnName where Id= " + row.Cells[0].Controls.OfType<TextBox>().FirstOrDefault().Text + "  ", con);
                cmd1.Parameters.AddWithValue("@ColumnName", row.Cells[5].Controls.OfType<TextBox>().FirstOrDefault().Text);                
                cmd1.ExecuteNonQuery();
                con.Close();
            }
        }
    }

// Теперь вызовите UpdateAllRecord () для вашего события нажатия кнопки или любого другого события

protected void upload_Click(object sender, EventArgs e)
    {
        UpdateAllRecord()
    }
0 голосов
/ 02 сентября 2011

Полное решение для многострочного редактирования можно найти по адресу Matt Dotsons Blog .Я использую его в своем собственном приложении.

Что нужно сделать как минимум, помимо регистрации нового типа gridview и замены существующего asp: GridView на новый тип, это сообщить GridView идентификатор вашего "SaveButton».Затем эта кнопка будет вызывать события RowUpdating / Обновлено для каждой измененной строки.

Подробную информацию и загружаемый исходный код см. В сообщении в блоге Dotsons.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...