在c#中从网格视图编辑和删除时出错 [英] Error while editing and deleting from grid view in c#

查看:79
本文介绍了在c#中从网格视图编辑和删除时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨!



我有一个网格视图,显示员工的详细信息。它还允许编辑和删除员工及其详细信息。如果选择了编辑,则表单页面上会显示一些文本框,这些文本框将使用所选的员工详细信息进行更新。如果选择删除,则会删除所有员工详细信息。但是,我的程序似乎存在一些问题 - 当我点击编辑(选择命令重命名为编辑)或删除时,有一个错误表明 -



无效的列名称'' mjl ''。



其中mjl是empLoginId(Data Kay)网格。



代码如下:



开.aspx页面 -

 <   asp:GridView     ID   =  GridView1   宽度  =  100%   高度  =  180px    runat   = 服务器  

AutoGe nerateColumns = False AllowPaging = True DataKeyNames = empLoginId

< span class =code-attribute> OnRowDeleting = adminDelete PageSize = < span class =code-keyword> 5

< span class =code-attribute> onselectedindexchanged = GridView1_SelectedIndexChanged

OnPageIndexChanging = GridView1_PageIndexChanging >
< >
< asp:BoundField DataField = empFname HeaderText = 员工名字

SortExpression = empFname / >
< asp:BoundField DataField = empLname HeaderText = 雇用ee姓氏

SortExpression = empLname / >
< asp:BoundField DataField = pwd HeaderText = 密码 SortExpression = pwd / >
< asp:BoundField DataField = empRole HeaderText = 员工角色

SortExpression = empRole / >
< as p:CommandField ShowSelectButton = True SelectText = 编辑 / >
< asp:CommandField ShowDeleteButton = True / >
< / Columns >
< / asp:GridView > ;







在.aspx.cs页面 -

  protected   void  GridView1_SelectedIndexChanged(< span class =code-keyword> object  sender,EventArgs e)
{
int rowIndex = GridView1.SelectedIndex;

string strValue = GridView1.DataKeys [rowIndex] .Value.ToString();
使用(SqlConnection con1 = new SqlConnection( server =。\\SQLEXPRESS; database = dB; Integrated Security = SSPI;))
{
con1 。打开();
使用(SqlCommand command = con1.CreateCommand())
{
command.CommandText = SELECT empFname,empLname,pwd,empTitle,city,empEmail,empType,empRole,dept FROM [emp] WHERE([empLoginId] = + strValue + ;
SqlDataReader reader = command.ExecuteReader();

while (reader.Read())
{
TextBox5.Text = reader [ empFname]。ToString()。ToUpper();
TextBox20.Text = reader [ empLname]。ToString()。ToUpper() ;
TextBox11.Text = strValue.ToUpper();
TextBox13.Text = reader [ pwd]。ToString();
TextBox14.Text = reader [ pwd]。ToString();
TextBox15.Text = reader [ empTitle]。ToString()。ToUpper() ;
TextBox16.Text = reader [ dept]。ToString()。ToUpper() ;
TextBox17.Text = reader [ empEmail]。ToString();

}
}
con1.Close();
}
}


受保护 void GridView1_PageIndexChanging(<跨度类= 代码关键字>对象发件人,GridViewPageEventArgs E)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1_SelectedIndexChanged(sender,e);
}


受保护 void adminDelete(<跨度类= 代码关键字>对象发件人,GridViewDeleteEventArgs E)
{
<跨度类= 代码关键字> INT
的rowIndex = GridView1.SelectedIndex;

string strValue = GridView1.DataKeys [e.RowIndex] .Values [ empLoginId]。ToString();
SqlConnection con1 = new SqlConnection( server =。\\SQLEXPRESS; database = dB; Integrated Security = SSPI;);
con1.Open();
SqlCommand cmd = new SqlCommand( delete来自emp,其中empLoginId = + strValue,con1);
int result = cmd.ExecuteNonQuery();
con1.Close();
if (result == 1
{
Label4。 Visible = true ;
Label4.ForeColor = Color.Red;
Label4.Text = strValue + 的详细信息已成功删除;
}
else
{
Label4.Visible = false ;
}
}





我似乎无法弄清楚我哪里出错了!请帮帮我!

解决方案

而不是: -

  strValue中= GridView1.DataKeys [e.RowIndex] .Values [<跨度类= 代码串 > <跨度类= 代码串> empLoginId]。ToString(); 



试试这个

  string  strValue = GridView1.DataKeys [index] .Value.ToString()


而不是:

  string  strValue = GridView1.DataKeys [e.RowIndex] .Values [  empLoginId]。ToString(); 



试试这个

<跨度类= 代码关键字>串 strValue中= GridView1.DataKeys [e.RowIndex] .Value.ToString();


看到这个链接,可能对你有所帮助。



在gridview的ASP.NET行更新事件 [ ^ ]



谢谢你。


Hi!

I have a grid-view which displays the details of an employee. It also allows editing and deletion of the employee and his details. If Edit is selected, there are a few text boxes, on the form page, which get updated with the selected employee details. If delete is selected, ALL the employee details get deleted. However, there seems to be some issue with my program - when I click on Edit(Select Command renamed to edit) OR Delete, there is an error which states -

Invalid column name ''mjl''.

Where mjl is the empLoginId (Data Kay) of the grid.

The code is as follows :

On the .aspx page -

<asp:GridView ID="GridView1" Width="100%" Height="180px" runat="server"

                    AutoGenerateColumns="False" AllowPaging="True" DataKeyNames="empLoginId"

                     OnRowDeleting="adminDelete" PageSize="5"

                    onselectedindexchanged="GridView1_SelectedIndexChanged"

                    OnPageIndexChanging="GridView1_PageIndexChanging" >
                    <Columns>
                        <asp:BoundField DataField="empFname" HeaderText="Employee First Name"

                            SortExpression="empFname" />
                        <asp:BoundField DataField="empLname" HeaderText="Employee Last Name"

                            SortExpression="empLname" />
                        <asp:BoundField DataField="pwd" HeaderText="Password" SortExpression="pwd" />
                        <asp:BoundField DataField="empRole" HeaderText="Employee Role"

                            SortExpression="empRole" />
                        <asp:CommandField ShowSelectButton="True" SelectText="Edit" />
                        <asp:CommandField ShowDeleteButton="True" />
                    </Columns>
                </asp:GridView>




On the .aspx.cs page -

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    int rowIndex = GridView1.SelectedIndex;

    string strValue = GridView1.DataKeys[rowIndex].Value.ToString();
    using (SqlConnection con1 = new SqlConnection("server=.\\SQLEXPRESS;database=dB;Integrated Security=SSPI;"))
    {
        con1.Open();
        using (SqlCommand command = con1.CreateCommand())
        {
            command.CommandText = "SELECT empFname,empLname,pwd,empTitle,city,empEmail,empType,empRole,dept FROM [emp] WHERE ( [empLoginId] = " + strValue + " ) ";
            SqlDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                TextBox5.Text = reader["empFname"].ToString().ToUpper();
                TextBox20.Text = reader["empLname"].ToString().ToUpper();
                TextBox11.Text = strValue.ToUpper();
                TextBox13.Text = reader["pwd"].ToString();
                TextBox14.Text = reader["pwd"].ToString();
                TextBox15.Text = reader["empTitle"].ToString().ToUpper();
                TextBox16.Text = reader["dept"].ToString().ToUpper();
                TextBox17.Text = reader["empEmail"].ToString();

            }
        }
        con1.Close();
    }
}


protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    GridView1_SelectedIndexChanged(sender, e);
}


protected void adminDelete(object sender, GridViewDeleteEventArgs e)
{
    int rowIndex = GridView1.SelectedIndex;

    string strValue = GridView1.DataKeys[e.RowIndex].Values["empLoginId"].ToString();
    SqlConnection con1 = new SqlConnection("server=.\\SQLEXPRESS;database=dB;Integrated Security=SSPI;");
    con1.Open();
    SqlCommand cmd = new SqlCommand("delete from emp where empLoginId=" + strValue, con1);
    int result = cmd.ExecuteNonQuery();
    con1.Close();
    if (result == 1)
    {
        Label4.Visible = true;
        Label4.ForeColor = Color.Red;
        Label4.Text = strValue + "'s details deleted successfully";
    }
    else
    {
        Label4.Visible = false;
    }
}



I can''t seem to figure out where I am going wrong! Please help me out!

解决方案

instead of this:-

string strValue = GridView1.DataKeys[e.RowIndex].Values["empLoginId"].ToString();


try this

string strValue =GridView1.DataKeys[index].Value.ToString()


instead of this:

string strValue = GridView1.DataKeys[e.RowIndex].Values["empLoginId"].ToString();


try this

string strValue = GridView1.DataKeys[e.RowIndex].Value.ToString();


See this link, may help ful to u.

Row updating event in gridview ASP.NET[^]

thank u.


这篇关于在c#中从网格视图编辑和删除时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆