基本的に、私は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 を取るコンストラクターがありません。だから追加できない。それで、私は何をしますか?