试图为asp.net SqlDataSource设置参数并通过gridview更新

本文关键字:gridview 更新 参数 设置 asp net SqlDataSource | 更新日期: 2023-09-27 18:15:50

我试图遵循msdn,但显然我错了,或者至少错过了一些关键的信息。

页面很简单,我有一个绑定到SqldataSource的网格视图,并且在update命令中,我为网格视图中的字段创建了参数,另外还有一个参数用于告诉更新命令要更新哪些行。

我的主要问题是为什么它告诉我gridview不包含'SelectParameters'的定义(见代码中的注释)。这里的代码直接来自msdn。

我有一些问题要解决,但首先我得弄清楚如何传递参数。

谢谢

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="RegisterVisitorPortal.aspx.cs" Inherits="resident_RegisterVisitorPortal" %>
<script runat="server">

    //void EmployeesGridView_OnSelectedIndexChanged(Object sender, EventArgs e)
    //{
    //    //gridview does not contain a definition for 'SelectParameters'
    //    GridView1.SelectParameters["VisitorName"].DefaultValue = GridView1.SelectedValue.ToString();
    //    GridView1.SelectParameters["ResidentName"].DefaultValue = Request.LogonUserIdentity.Name;
    //    GridView1.DataBind();
    //}
</script>    
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <%--data source object the grid view is tied to--%>
    <asp:SqlDataSource 
        ID="SqlDataSource1" 
        runat="server" 
        ConnectionString="<%$ ConnectionStrings:Warren_SEINDATASYSTEMSConnectionString %>" 
        SelectCommand="SELECT [VisitorCode], [VisitorName] FROM [RegisteredVisitors] WHERE [ResidentName] = @ResidentName"
        OnSelecting="SqlDataSource1_Selecting"
        UpdateCommand="UPDATE [dbo].[RegisteredVisitors] SET [VisitorCode] = '3222' ,[VisitorName] = @VisitorName WHERE [ResidentName] = @ResidentName" 
        >
        <SelectParameters>
            <asp:Parameter Name="VisitorName" Type="String" DefaultValue="Visitor" />
            <asp:Parameter Name="ResidentName" Type="String" DefaultValue="ResidentName" />
        </SelectParameters>
        <UpdateParameters>
            <asp:Parameter Name="VisitorName" Type="String" DefaultValue="Visitor" />
            <asp:Parameter Name="ResidentName" Type="String" DefaultValue="ResidentName" />
        </UpdateParameters>
    </asp:SqlDataSource>
    <%--grid view showing and allowing edit of data--%>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" CellPadding="4" ForeColor="#333333">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:BoundField DataField="VisitorCode" HeaderText="VisitorCode" SortExpression="VisitorCode" ReadOnly="true"/>
            <asp:BoundField DataField="VisitorName" HeaderText="VisitorName" SortExpression="VisitorName" />
        </Columns>
        <EditRowStyle BackColor="#999999" BorderColor="Black" BorderWidth="1px" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#506C8C" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    </asp:GridView>

</asp:Content>

试图为asp.net SqlDataSource设置参数并通过gridview更新

您在定义SqlDataSource时没有在select语句中使用任何参数,因此在SqlDataSource中不需要SelectParameters部分,但需要UpdateParameters部分

  <selectparameters>
              <asp:controlparameter name="VisitorName" controlid="hiddenfiled1" propertyname="value"/>
          </selectparameters>
  <selectparameters>
              <asp:controlparameter name="ResidentName" controlid="hiddenfiled2" propertyname="value"/>
          </selectparameters>

在编辑事件时将值存储在隐藏文件中。在SqlDataSource中使用隐藏的字段值作为参数使其工作