【问题标题】:asp.net edit template using C#使用 C# 的 asp.net 编辑模板
【发布时间】:2015-04-15 23:51:16
【问题描述】:

我正在使用存储过程来编辑列表视图控件中的数据行。每行都有“编辑”和“删除”链接,因此当用户单击“编辑”时,该行应该可以编辑。 我得到的错误是,当用户点击“编辑”时,行无法编辑。

使用的存储过程是:

CREATE PROCEDURE [dbo].[RegisterUpdate]
-- Add the parameters for the stored procedure here
@id int,
@fname nvarchar(50),
@lname nvarchar(50),
@company nvarchar(50),
@email  nvarchar(250)

作为 开始 -- 添加了 SET NOCOUNT ON 以防止额外的结果集 -- 干扰 SELECT 语句。 设置无计数;

-- Update statements for procedure here

    Update dbo.register
        SET fname = @fname, 
             lname = @lname,
            company=@company,
            email=@email
        WHERE dbo.register.id=@id
END     

去

Asp.net 代码是:

<EditItemTemplate>
          <tr style="background-color: #E0FFFF; color: #333333;">
                <td>
                    <asp:TextBox ID="fname" runat="server" Text='<%# Eval("fname") %>'>'></asp:TextBox>

                </td>
                <td>
                    <asp:TextBox ID="lname" runat="server" Text='<%# Eval("lname") %>'>'></asp:TextBox>
                </td>
                <td>
                    <asp:TextBox ID="company" runat="server" Text='<%# Eval("company") %>'>'></asp:TextBox>
                </td>
                <td>
                    <asp:TextBox ID="email" runat="server" Text='<%# Eval("email") %>'>'></asp:TextBox>
                </td>
                 <td>
                    <asp:LinkButton ID="lnkSave" runat="server" Text="Save" CommandName="Save" />
                </td>
                <td>
                    <asp:LinkButton ID="lnkCancel" runat="server" Text="Cancel" CommandName="Cancel" />
                </td>
              </tr>

            </EditItemTemplate>

用于在数据集中保存数据的C#代码是:

 protected void ListViewDetails_ItemEditing(object sender, System.Web.UI.WebControls.ListViewEditEventArgs e)
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("dbo.RegisterUpdate", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@fname", con);
            cmd.Parameters.AddWithValue("@lname", con);
            cmd.Parameters.AddWithValue("@company", con);
            cmd.Parameters.AddWithValue("@email", con);
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
        }

【问题讨论】:

  • 在您定义 ListView 的编辑按钮的位置显示标记
  • 您的编辑事件处理程序有一些错误。除此之外,是否显示任何错误或类似的只是单击编辑按钮,没有任何反应???

标签: c# asp.net sql-server-2008 data-binding


【解决方案1】:

让我们尝试一下它可能会对您有所帮助。

protected void AdminUserControl_ItemEditing(object sender, ListViewEditEventArgs e)
    {
        AdminUserControl.EditIndex = e.NewEditIndex;
        UserBLL userbll = new UserBLL();
        AdminUserControl.DataSource = userbll.GetAllUsers();
        AdminUserControl.DataBind();

    }
    protected void AdminUserControl_ItemUpdating(object sender, ListViewUpdateEventArgs e)
    {
        UserBLL userbll = new UserBLL();

        TextBox fname= (TextBox)e.NewValues["fname"];
        TextBox lname= (TextBox)e.NewValues["lname"];
        TextBox company= (TextBox)e.NewValues["company"];
        TextBox email= (TextBox)e.NewValues["email"];

        user = new User();
        user.fname= Convert.ToInt16(fname.Text);
        user.lname= lname.Text;
        user.company= company.Text;
        user.email= email.Text;

        admin.UpdateUsers(user);
    }

如果您使用的是网格视图,那么see

【讨论】:

    【解决方案2】:

    您应该在 ItemUpdating 方法中绑定值。 为 ItemUpdating 附加带有 listview 的 Handler。

    当更新命令被触发时,你应该使用代码。

    protected void ListViewDetails_ItemUpdating(object sender, ListViewUpdateEventArgs e)
            {
                TextBox fname = (TextBox)e.NewValues["fname"];
                TextBox lname = (TextBox)e.NewValues["lname"];
                TextBox company = (TextBox)e.NewValues["company"];
                TextBox email = (TextBox)e.NewValues["email"];
    
    
                con.Open();
                SqlCommand cmd = new SqlCommand("dbo.RegisterUpdate", con);
                cmd.CommandType = CommandType.StoredProcedure;
    
    
    
                cmd.Parameters.AddWithValue("@fname", Convert.ToInt16(fname.Text));
                cmd.Parameters.AddWithValue("@lname", lname.Text);
                cmd.Parameters.AddWithValue("@company", company.Text);
                cmd.Parameters.AddWithValue("@email", email.Text);
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                cmd.ExecuteNonQuery();
            }
    

    希望对你有帮助

    【讨论】:

    • 代码已更新...添加了cmd.ExecuteNonQuery();,它将执行命令。可能是您可能会收到参数错误,那是因为您必须设置并将预期的参数传递到存储过程中。
    【解决方案3】:

    试试这个代码

    public void ListViewDetails_ItemEditing(object sender, System.Web.UI.WebControls.ListViewEditEventArgs e)
    {
        string connectionString = "??";
    
        using (SqlConnection sqlConn = new SqlConnection(connectionString)) {
    
            using (SqlCommand cmd = new SqlCommand("dbo.RegisterUpdate", sqlConn)) {
    
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@id", ????);
                cmd.Parameters.AddWithValue("@fname", (TextBox)e.NewValues["fname"]);
                cmd.Parameters.AddWithValue("@lname", (TextBox)e.NewValues["lname"]);
                cmd.Parameters.AddWithValue("@company", (TextBox)e.NewValues["company"]);
                cmd.Parameters.AddWithValue("@email", (TextBox)e.NewValues["email"]);
    
                try {
                    sqlConn.Open();
                }
                catch (Exception ex) {
                    //handle exception
                }
    
                try {
                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex) {
                    //handle exception
                }
            }
        }
    }
    

    您从哪里获得用户 ID?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多