错误编辑asp.net中服务器端的Gridview [英] error edit Gridview from server side in asp.net

查看:76
本文介绍了错误编辑asp.net中服务器端的Gridview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

hi
i有一个页面.aspx和类

i将数据从数据库绑定到使用此类的gridview。

当我使用它时工作正常GridGe中的AutoGenerateColumns =True

但是当我更改AutoGenerateColumns =False并添加TemplateField时出现错误:



错误:参数化查询''(@FlNm nvarchar(4000),@ _ ml nvarchar(4000),@ _ MbN nvarchar(4000),@''需要参数''@FlNm'',这是未提供的。



.aspx代码:



hi i have a page .aspx and class
i bind data from database to gridview with this class.
it''s work fine when i use AutoGenerateColumns="True" in Gridview
but when i change AutoGenerateColumns="False" and add TemplateField i get error:

error: The parameterized query ''(@FlNm nvarchar(4000),@_ml nvarchar(4000),@_MbN nvarchar(4000),@'' expects the parameter ''@FlNm'', which was not supplied.

.aspx code:

<%@ Page Language="C#" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:GridView

                ID="grdMovies"

                DataSourceID="src_NwsLtr"

                DataKeyNames="ID_NwsLtr"

                AutoGenerateEditButton="True"

                 AutoGenerateColumns="False"

                runat="server">
               <Columns>
                    <asp:TemplateField HeaderText="Name">
                  <EditItemTemplate>
                      <asp:TextBox runat="server" ID="txtName" Text='<%# Eval("FlNm") %>'></asp:TextBox>
                  </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Eval("FlNm") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
                    .............
                    .............
                    ...............

               </Columns>
            </asp:GridView>

            <asp:ObjectDataSource

                ID="src_NwsLtr"

                TypeName="NwsLtr"

                SelectMethod="Get_NwsLtr"

                UpdateMethod="Update_NwsLtr"

                runat="server">
                <UpdateParameters>
                    <asp:Parameter Name="ID_NwsLtr" Type="Int32" />
                    <asp:Parameter Name="FlNm" />
                    <asp:Parameter Name="_ml" />
                    <asp:Parameter Name="_MbN" />
                </UpdateParameters>
            </asp:ObjectDataSource>

        </div>
    </form>
</body>
</html>





我的班级代码:



my class code:

public class NwsLtr
{
	private readonly string _conString;

    public void Update_NwsLtr(int ID_NwsLtr, string FlNm, string _ml, string _MbN)
    {
        // Create Command
        SqlConnection con = new SqlConnection(_conString);
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = "UPDATE Tbl_NwsLtr SET FlNm=@FlNm," +
                                               "_ml=@_ml,"    +
                                               "_MbN=@_MbN"   +
                         " WHERE ID_NwsLtr=@ID_NwsLtr";

        // Add parameters
        cmd.Parameters.AddWithValue("@FlNm", FlNm);
        cmd.Parameters.AddWithValue("@_ml", _ml);
        cmd.Parameters.AddWithValue("@_MbN", _MbN);
        cmd.Parameters.AddWithValue("@ID_NwsLtr", ID_NwsLtr);

        // Execute command
        using (con)
        {
            con.Open();
            cmd.ExecuteNonQuery();
        }
    }

    public SqlDataReader Get_NwsLtr()
    {
        // Create Connection
        SqlConnection con = new SqlConnection(_conString);

        // Create Command
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = "SELECT ID_NwsLtr,FlNm,_ml,_MbN FROM Tbl_NwsLtr";

        // Return DataReader
        con.Open();
        return cmd.ExecuteReader(CommandBehavior.CloseConnection);
    }

    public NwsLtr()
    {
        _conString = WebConfigurationManager.ConnectionStrings["BookDB"].ConnectionString;
    }
}

推荐答案

问题是关于使用 Bind Eval

如:

The issue is about using Bind or Eval.
Such as:
<asp:TextBox runat="server" ID="txtName" Text='<%# Eval("FlNm") %>'></asp:TextBox>

确定它不是必需的参数。



注意

1.使用 Eval 如果你不希望该字段成为更新参数。

2.并且 使用绑定如果你想要它作为参数



因此,引用以下更新参数的文本框需要 Bind 不是 Eval

determines it is not required as a parameter.

NOTE
1. Use Eval if you don''t want the field to be an Update Parameter.
2. And use Bind if you want it to be a parameter.

So, the textboxes referring to the below Update Parameters need to have Bind not Eval.

<asp:Parameter Name="ID_NwsLtr" Type="Int32" />
<asp:Parameter Name="FlNm" />
<asp:Parameter Name="_ml" />
<asp:Parameter Name="_MbN" />



参考 - 使用ObjectDataSource的GridView示例插入编辑更新 [ ^ ]这是一个很好的例子。



谢谢......


Refer - GridView With ObjectDataSource Example Insert Edit Update[^] for one nice example.

Thanks...


这篇关于错误编辑asp.net中服务器端的Gridview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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