0

基本上,我有一个 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 并且标签的文本是字符串,因此它不会在绑定到 SqlDatasource 的详细信息视图中显示任何结果。

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

  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 的构造函数。所以我不能添加它。那么,我该怎么办?

4

1 回答 1

1

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

另外我相信你不需要在SelectedIndexChanged处理程序中添加参数,只要你更新标签文本并调用DataBind控制参数应该自动获取新值。

于 2013-07-06T12:38:20.730 回答