0

我有一个带有自动生成列的基础网格我如何从后面的代码中为其分配一个存储的 proc 结果

      <ig:WebScriptManager ID="WebScriptManager1" runat="server"></ig:WebScriptManager>
<ig:WebDataGrid ID="EntityGrid" runat="server"  Width="100%">
    <Behaviors>
        <ig:Sorting>
        </ig:Sorting>
    </Behaviors>
</ig:WebDataGrid>

后面的代码是

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        EntityName.Text = DropDownList1.SelectedItem.Text;
        string @RegardingObjectName = DropDownList1.SelectedItem.Text.Trim();
        String strConnString = ConfigurationManager.ConnectionStrings["LiveLeaseConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(strConnString);
        SqlCommand cmd = new SqlCommand();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "p_DataList_ByRegardingObject";
        cmd.Parameters.AddWithValue("@RegardingObjectName", @RegardingObjectName);
        cmd.Connection = con;
        try
        {              
            con.Open();
            EntityGrid.DataSource = cmd.ExecuteReader();
            EntityGrid.DataBind();

我需要将实体作为参数传递给存储过程。我怎么能在这里做到这一点?

我收到读者关闭错误

4

1 回答 1

1

您需要将 ControlParameter添加到SelectParameters

<asp:ControlParameter Name="entityId" 
ControlID="DropDownList1" 
PropertyName="SelectedItem" Type="String" />

另请参阅此问题如何在 SqlDataSource 中为存储过程指定参数值

编辑您可以使用 Selecting 事件,如此处所示

在 C# 中的代码后面编写 SQLdatasource 以使用代码后面的值

您还可以添加一个选择参数作为

EntityGrid.SelectParameters.Add("entityId", DropDownList1.SelectedItem.Text);

只需将“entityId”重命名为要与 SP 一起使用的参数名称

编辑2

代替

EntityGrid.DataSource = cmd.ExecuteReader();
            EntityGrid.DataBind();

尝试这个

SqlDataReader reader = cmd.ExecuteReader();
    using (reader)
    {
      DataTable table = new DataTable();
      table.Load(reader);
      EntityGrid.DataSource = table;
    }

有关更多信息,请参阅此链接:http:
//mentaljetsam.wordpress.com/2008/11/20/loading-an-sqldatareader-into-a-datagridview/

于 2013-05-02T17:38:12.757 回答