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 に答える