轉自:http://www.cnblogs.com/jpwar/archive/2006/06/13/424637.html
這個ArrayList只有一個string類型的項在裏面。
類似
ArrayList arraylist = new ArrayList();
arraylist.add("Item 0");
arraylist.add("Item 2");
arraylist.add("Item 3");
arraylist.add("Item 4");
arraylist.add("Item 5");
arraylist.add("Item 6");
代碼上綁定的方法很簡單,大家都會。
DataGrid1.DataSource=arraylist;
DataGrid1.DataBind();
如果讓他自動生成列,會生成出一個Item列出來,顯示正常。
現在問題就來了,我怎麼才能自己在前面顯示出這個string呢?
網上給的回答多是模版列。
<asp:TemplateColumn HeaderText="標題">
<ItemTemplate>
<%# Container.DataItem %>
</ItemTemplate>
</asp:TemplateColumn>
這種方法固然很可以,但我要用綁定列該怎麼辦?搜索了一上午沒有結果。用item提示找不到列。只好用Reflector看看了自動生成列的代碼。核心部分如下:
BoundColumn column1 = new BoundColumn();
column1.TrackViewState();
column1.HeaderText = "Item";
column1.DataField = BoundColumn.thisExpr;
column1.SortExpression = "Item";
column1.SetOwner(this);
list1.Add(column1);
看到了吧,DataField = BoundColumn.thisExpr。這是個靜態屬性,值是!。所以,綁定列應該用!....
如下:
<asp:BoundColumn DataField="!" HeaderText="標題">
<HeaderStyle HorizontalAlign="Center" Width="240px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:BoundColumn>
成功!。真搞不懂老外在想什麼,"Item"不好嗎?偏用"!"。又浪費我不少時間。。。