2011-03-17 64 views

回答

3

是的,這是可能的。您必須在網格視圖中指定列,將它們綁定到某個表達式,具體取決於ArrayList的內容(您喜歡什麼類型的對象?),然後在後面輸入代碼:

myGrid.DataSource = myArrayList; 
myGrid.Databind(); 
+1

我剛剛列出arraylist中的字符串列表。綁定到表達式,你的意思是什麼?你能解釋更多的小點嗎?謝謝 – 2011-03-17 10:26:11

+1

Gridview驚人的鏈接通過Microsoft http://msdn.microsoft.com/en-us/library/vstudio/ms228113(v=vs.90).aspx – 2013-06-18 09:51:58

2

創建ArrayList之後,您只需將ArrayList添加到數據表中並將數據表綁定到GridView。然後在設計頁面中提到AutoGenerateColumns屬性爲「true」。

如下面的代碼: 在設計頁面:

<asp:GridView ID="gvarray" runat="server" Width="328px"> 
    <Columns> 
      <asp:TemplateField HeaderText="Select One"> 
       <ItemTemplate> 
        <asp:Label ID = "rdoday" runat = "server" text = '<%# DataBinder.Eval (Container.DataItem, "Item") %>' /> 

       </ItemTemplate> 
      </asp:TemplateField> 
    </Columns> 

在後臺代碼:

ArrayList Array_L = new ArrayList(); 
     Array_L.Add("One"); 
     Array_L.Add("two"); 
     Array_L.Add(2); 
DataTable dt = new DataTable(); 
dt.Columns.Add("Name"); 
for (int i = 0; i < Array_L .Count();i++) 
{ 
    dt.Rows.Add(); 
    dt.Rows[i]["Name"] = Array_L [i].ToString(); 
} 
gvarray.DataSource = dt; 
gvarray.DataBind(); 
1

您可以創建一個新的ArrayList從SqlDataSource的獲取所有數據。然後,可以使用數據表將數組從ArrayList插入指定的列和行視圖中。

以下是隱藏文件的代碼:

ArrayList myList = sampleController.getDataFromTable(); 
     DataTable dataTable = new DataTable(); 
     DataColumn dataColumn; 
     dataColumn = new DataColumn("UserID"); 
     dataTable.Columns.Add(dataColumn); 
     dataColumn = new DataColumn("Username"); 
     dataTable.Columns.Add(dataColumn); 
     dataColumn = new DataColumn("MobileNo"); 
     dataTable.Columns.Add(dataColumn); 
     dataColumn = new DataColumn("Address"); 
     dataTable.Columns.Add(dataColumn); 

     foreach (object str in myList) 
     { 
      Customer customer= new Customer(); 
      customer= (Customer)str; 
      DataRow dataRow = dataTable.NewRow(); 
      dataRow[0] = customer.DailyRunNo; 
      dataRow[1] = customer.Area.Name; 
      dataRow[2] = customer.Employee.EmployeeName; 
      dataRow[3] = customer.SalStatus; 

      dataTable.Rows.Add(dataRow); 
     } 
     gvCustomer.DataSource = dataTable; 
     gvCustomer.DataBind();//Bind datatable 

以下是在ASPX設計頁:

<asp:TemplateField HeaderText="User ID"> 
         <ItemTemplate> 
          <asp:Label ID="lblDailyRunNo" runat="server" Text='<%# Eval("UserID") %>' /> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="UserName"> 
         <ItemTemplate> 
          <asp:Label ID="lblAreaNo" runat="server" Text='<%# Eval("Username") %>' /> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Mobile Number"> 
         <ItemTemplate> 
          <asp:Label ID="lblSalespersonName" runat="server" Text='<%# Eval("MobileNo") %>' /> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Address"> 
         <ItemTemplate> 
          <asp:Label ID="lblStatus" runat="server" Text='<%# Eval("Address") %>' /> 
         </ItemTemplate> 
        </asp:TemplateField> 
0

這是不符合邏輯的使用ArrayList當數據被綁定爲表格結構。當數據需要使用Dropdown或ListView控件進行綁定時,您可以使用ArrayList。

如果要將數據綁定到gridview/datalist/DataList控件,那麼應該使用DataTable/Dataset更好的選項,或者可以使用LIST ex:LIST。

在這裏我有一個Datatable與gridview的例子。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.IO; 
using System.Data.OleDb; 
using System.Collections; 

namespace TestApp 
{ 
    public partial class MyWebPage: System.Web.UI.Page   
    { 
     static string GetConnectionString() 
     { 
      return ConfigurationManager.ConnectionStrings["myConnString"].ConnectionString; 
     } 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       BindData(); 
      } 
     } 

     private void BindData() 
     { 
      string connstring = GetConnectionString(); 
      using(SqlConnection cn = new SqlConnection()) 
      { 
       string query = "your sql query"; 
       SqlDataAdapter da = new SqlDataAdapter(query,cn); 
       cn.Open(); 
       DataTable dtMyTable = new DataTable(); 
       da.Fill(dtMyTable); 
       GridView1.DataSource = dtMyTable; 
       GridView1.DataBind(); 
       } 
      } 
     } 
    }