尝试为asp.net SqlDataSource创建参数并通过gridview进行更新

时间:2016-11-02 05:54:35

标签: c# asp.net sql-server parameters

我试图关注一个msdn,但显然我弄错了,或者至少错过了一些关键信息。

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

我的主要问题是为什么它告诉我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>

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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