给sqldatasource分配参数

本文关键字:参数 分配 sqldatasource | 更新日期: 2023-09-27 18:17:34

我试图从SQL Server获取数据并在formview中使用它,但formview控件不会从数据源获取任何数据。

(数据源在页面加载时获得参数)

输出只是:"There is nothing to see here"和一个空表。

下面是数据源和formview标签:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:igroup20_test2ConnectionString %>" 
        SelectCommand="SELECT * FROM [member] where ([id] = @idd)">
   <SelectParameters>
       <asp:Parameter Name="idd" Type="String" />
   </SelectParameters>
</asp:SqlDataSource>
<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="id">
   <EmptyDataTemplate>
   There is nothing to see here.
   </EmptyDataTemplate>
   <ItemTemplate>
      <table>
         <tr>
            <td>
               <asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>
            </td>
            <td>
               <asp:Label ID="Label2" runat="server" Text='<%# Eval("f_name") %>'></asp:Label>
            </td>
         </tr>
      </table>
   </ItemTemplate>
</asp:FormView>
下面是我的代码:
 protected void Page_Load(object sender, EventArgs e)
 {
        SqlDataSource1.SelectParameters.Add("@idd", "077763554");
        FormView1.DataBind();
 }

给sqldatasource分配参数

你有两个问题:

    首先,您不需要再次添加参数-它已经在您的标记中定义了。
  1. 你不需要在你的参数名称中使用@ -只需要名称就可以了。

所以用下面的代码:

protected void Page_Load(object sender, EventArgs e)
{
    SqlDataSource1.SelectParameters["idd"].DefaultValue = "077763554";
    FormView1.DataBind();
}

应该做到这一点-在现有参数上设置.DefaultValue,并使用idd参数名称,如标记(<asp:Parameter Name="idd" Type="String" />)

中定义的那样

似乎你在这里添加了2个参数。一个是声明式的,另一个在后面的代码中。

尽量只在后面的代码中添加参数。将@idd改为idd

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:igroup20_test2ConnectionString %>" 
        SelectCommand="SELECT * FROM [member] where ([id] = @idd)">
</asp:SqlDataSource>
protected void Page_Load(object sender, EventArgs e)
 {
        SqlDataSource1.SelectParameters.Add("idd", "077763554");
        FormView1.DataBind();
 }