如何通过Asp.net中的SqlDataSource存储过程参数将Int32输入发送到数据库

本文关键字:输入 Int32 数据库 参数 Asp 何通过 net 中的 存储过程 SqlDataSource | 更新日期: 2023-09-27 18:21:06

基本上,我有一个Gridview。我正在获取一个特定单元格的文本值,并放入一个asp标签。

现在,我想使用该标签的文本作为SqlDatasource(如)上存储过程的输入

       <asp:SqlDataSource ID="AddressContactSource"
          runat="server"
          ConnectionString="<%$ ConnectionStrings:UACOrdersConnectionString %>"
          SelectCommand="GetAddressContact" 
          SelectCommandType="StoredProcedure">
                  <SelectParameters>
                      <asp:ControlParameter ControlID="Silver"
                          Name="@AccountID"
                          PropertyName="Text"
                          Type="Int32" DefaultValue="2624" />
                  </SelectParameters>
              </asp:SqlDataSource>

问题是这不起作用,因为AccountID(存储过程的输入参数)是int32,而Label的文本是字符串,因此它不会在绑定到SqlDatasource的Details视图中显示任何结果。

现在,我在放置单元格的网格视图的代码隐藏中更改了一个用于选定索引的方法。

  protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {

        string temp = GridView1.Rows[1].Cells[5].Text;
        Silver.Text = temp;
        int temp2 = Convert.ToInt32(temp, 10);
        Parameter p = new Parameter();
        p.Direction = ParameterDirection.Input;
        p.Type = TypeCode.Int32;
        p.Name = "@AccountID";
        AddressContactSource.SelectParameters.Add(p);
        AddressContact.DataBind();
        updatepanel1.Update();
    }

我的代码经过编译,在调试中也没有抛出任何异常。我知道这很接近,但Parameter没有一个接受int的构造函数。所以我不能添加它。那么,我该怎么办?

如何通过Asp.net中的SqlDataSource存储过程参数将Int32输入发送到数据库

您不需要参数名称以@开头(仅当存储过程输入参数从@@开始时才需要)。

此外,我相信您不需要在SelectedIndexChanged处理程序中添加参数,只要更新标签文本并调用DataBind控制参数,就会自动获得新值。