2010-12-15 110 views
0

我有GridView,我想添加一些更多的參數到數據源。其中一個參數叫做symbols,並且是DataTable,我不確定如何添加它。這裏是我的GridView與ASP.NET數據源參數故障

<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> 

這是我目前的數據源。

<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> 

我想通過所謂的symbols一個額外的參數,它是一個DataTable。我填充DataTable與此代碼:

DataTable symbols = GetSelectedItems("symbol", listSymbols);

GetSelectedItems看起來是這樣的:

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; 
} 

我曾嘗試和數據綁定自己,徹底消除了ObjectDataSource但隨後的排序和分頁活動間沒有沒有處理。你會如何解決這個小問題?

謝謝!

回答

1

您可以使用XML類型(和一個簡單的字符串SelectParameter),而不是數據表:

  1. 的Page_Load:列表框的 序列化選擇的項目爲XML
    和分配 他的文字到SelectParameter
  2. GetTrades :將SelectParameter中的xml反序列化爲列表<>局部變量
+0

謝謝 - 你能提供一個在Page_Load中用XML填充SelectParameter的例子嗎? – 2010-12-15 12:42:33

1
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(); 
+0

謝謝,但如何將它分配爲SelectParameter? – 2010-12-15 13:36:14

+0

srcTrades.SelectParameters [「ParameterName」]。DefaultValue = ... – 2010-12-15 14:11:45