BebeSaiyan Ответов: 0

Создание пользовательской кнопки редактирования в gridview с помощью ASP.NET?


Я пытаюсь создать пользовательскую кнопку редактирования для своего первого проекта. Чтобы суммировать содержимое моей таблицы, столбцы имеют такие данные:

Название Типа Изображения
Гитара Ibanez test1.jpg
Гитара Fender test2.jpg

Мне удалось отобразить таблицу вместе с кнопками редактирования,обновления и отмены. Но когда я пытаюсь изменить имя "Fender "на" Gibson", он выдает мне такую ошибку:не удается вставить значение NULL в столбец "type", таблица "BrandsDB.dbo.guitarBrands"; столбец не допускает нулей. Обновление не удается. Заявление было прекращено.

И самое странное, когда я снова запустил программу. Он обновляет, наконец, то, что я хотел, но ошибка перед этим-это проблема.

Название Типа Изображения
Гитара Ibanez test1.jpg
Гитара Гибсон test2.jpg

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

Вот код для aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"   Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>

</head>
<body>
<form id="form1" runat="server">
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource1" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Button ID="Button1" runat="server" Text="Delete" OnClick="Button1_Click"/>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Button ID="ButtonEdit" runat="server" Text="Edit" CommandName="Edit"/>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:Button ID="ButtonUpdate" runat="server" Text="Update" CommandName="Update"/>
                    <asp:Button ID="ButtonCancel" runat="server" Text="Cancel" CommandName="Cancel"/>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Type">
                <ItemTemplate>
                    <asp:Label ID="LabelType" runat="server" Text='<%# Eval("Type") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txt_Type" runat="server" Text='<%# Eval("Type") %>'></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Name">
                <ItemTemplate>
                   <asp:Label ID="LabelName" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
                </ItemTemplate>
            <EditItemTemplate>
        <asp:TextBox ID="txt_Name" runat="server" Text='<%# Eval("Name") %>'></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Image">
    <ItemTemplate>
        <asp:Label ID="LabelImage" runat="server" Text='<%# Eval("Image") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="txt_Image" runat="server" Text='<%# Eval("Image") %>'></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>

        </Columns>
    </asp:GridView>

    <br/>
    <asp:Label ID="lblId" runat="server" Text="Label"></asp:Label><br/>
    <asp:Label ID="lblName" runat="server" Text="Label"></asp:Label><br/>
</form>


using System;
 using System.Collections.Generic;
 using System.Configuration;
 using System.Data;
 using System.Data.SqlClient;
 using System.Linq;
 using System.Web;
 using System.Web.UI;
 using System.Web.UI.WebControls;

 public partial class _Default : System.Web.UI.Page
 {

SqlConnection con1 = new SqlConnection(@"Data Source=Y560\SQLEXPRESS;Initial Catalog=BrandsDB;Integrated Security=True");
SqlCommand cmd, cmd1;
DataSet ds, ds1;
public _Default()
{

    cmd1 = new SqlCommand();
    ds1 = new DataSet();
}
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        bindgridviewguitarbrands();
    }
}

//Start of Gridview Code for Guitar Brands
private void bindgridviewguitarbrands()
{

    con1.Open();
    cmd1.CommandText = "SELECT * FROM [guitarBrands]";
    cmd1.Connection = con1;
    SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
    da1.Fill(ds1);
    con1.Close();


    GridView1.DataBind();

}

protected void Button1_Click(object sender, EventArgs e)
{

        Button btn = sender as Button;
        GridViewRow gridrow = btn.NamingContainer as GridViewRow;
        int id = Convert.ToInt32(GridView1.DataKeys[gridrow.RowIndex].Value.ToString());
        string name = GridView1.Rows[gridrow.RowIndex].Cells[3].Text;

        lblId.Text = id.ToString();
        lblName.Text = name;

}

// row edit event
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    bindgridviewguitarbrands();

}
// row update event
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    // find student id of edit row
    string id = GridView1.DataKeys[e.RowIndex].Value.ToString();

    // find updated values for update
    TextBox type = (TextBox)GridView1.Rows[e.RowIndex].FindControl("txt_Type");
    TextBox name = (TextBox)GridView1.Rows[e.RowIndex].FindControl("txt_Name");
    TextBox image = (TextBox)GridView1.Rows[e.RowIndex].FindControl("txt_Image");

    SqlCommand cmd1 = new SqlCommand("update guitarBrands set Type='" + type.Text + "', Name = '"+name.Text+"', Image = '"+image.Text+"' where ID = "+id, con1);
    con1.Open();
    cmd1.ExecuteNonQuery();
    con1.Close();

    lblName.Text = name.ToString();
    GridView1.EditIndex = -1;
    bindgridviewguitarbrands();
}
// cancel row edit event
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
    GridView1.EditIndex = -1;
    bindgridviewguitarbrands();
}
 }

BebeSaiyan

ладно спасибо я буду смотреть в него.

0 Ответов