C# ASP.NET数据源参数出现问题

C# ASP.NET数据源参数出现问题,c#,asp.net,gridview,c#-4.0,C#,Asp.net,Gridview,C# 4.0,我有一个GridView,我想向数据源添加更多的参数。其中一个参数称为符号,是一个数据表,我不知道如何添加它。这是我的GridView: <asp:GridView ID="grdTrades" runat="server" DataKeyNames="tradeId" DataSource="srcTrades" EnablePersistedSelection="true" AllowPaging="tru

我有一个
GridView
,我想向数据源添加更多的参数。其中一个参数称为
符号
,是一个
数据表
,我不知道如何添加它。这是我的
GridView

<asp:GridView  
    ID="grdTrades" 
    runat="server" 
    DataKeyNames="tradeId"
    DataSource="srcTrades"
    EnablePersistedSelection="true"            
    AllowPaging="true" 
    AllowSorting="true"
    PageSize = "10" 
    AutoGenerateColumns="false"         
    >
    <Columns>
        <asp:BoundField DataField="tradeId" HeaderText="TradeId"  SortExpression="tradeId" />
        ... some more columns ...
    </Columns>
</asp:GridView>
我自己也尝试过绑定数据,并完全删除了
ObjectDataSource
,但是排序和分页事件没有得到处理。你将如何解决这个小问题

谢谢

您可以使用xml类型(和一个简单的字符串SelectParameter)代替DataTable:

  • 页面加载:序列化所选项目 将列表框转换为xml
    并分配 将文本输入SelectParameter
  • GetTrades:将SelectParameter中的xml反序列化为列表局部变量
  • XElement x=新的XElement(“根”,
    从类型()的_listbox.Items.i中的i开始
    其中i.选择
    选择新元素(“行”,即值));
    字符串s=x.ToString();
    
    谢谢-您能提供一个在加载页面中用XML填充SelectParameter的示例吗?谢谢,但如何将其指定为SelectParameter?
    <asp:ObjectDataSource
        id="srcTrades" 
        TypeName="DatabaseComponent.DBUtil" 
        SelectMethod="GetTrades" 
        DeleteMethod="DeleteTrade"             
        runat="server">
        <SelectParameters>
            <asp:ControlParameter Name="tradeTypeId" ControlID="ddlTradeTypes" PropertyName="SelectedValue" />
            <asp:ControlParameter Name="dateFrom" ControlID="txtDateFrom" PropertyName="Text" />
            <asp:ControlParameter Name="dateTo" ControlID="txtDateTo" PropertyName="Text" />            
        </SelectParameters>
        <DeleteParameters>
            <asp:ControlParameter Name="tradeId" ControlId="grdTrades" PropertyName="SelectedValue"  />
        </DeleteParameters> 
    </asp:ObjectDataSource>
    
    private DataTable GetSelectedItems(string column, ListBox _listbox)
    {
        DataTable items = new DataTable();
        items.Columns.Add(column, System.Type.GetType("System.String"));
    
        foreach (ListItem item in _listbox.Items)
        {
            if (item.Selected)
            {
                DataRow dr = items.NewRow();
                dr[column] = item.Value;
                items.Rows.Add(dr);
            }
        }
        return items;
    } 
    
        XElement x = new XElement("root",
            from i in _listbox.Items.OfType<ListItem>()
            where i.Selected
            select new XElement("row", i.Value));
        string s = x.ToString();