日期:2014-05-19  浏览次数:20528 次

关于DataGrid中列都绑定了,而只有一个是模版列,如何将数据库的值给这个列.
简单说明一下
我用了DataGrid控件,对于每一列都是用类似这样,一列一列绑定的.
                BoundColumn   colSurveyName   =   new   BoundColumn();
                colSurveyName.DataField   =   "survey_title ";
                colSurveyName.HeaderText   =   "SurveyTitle ";
                this.dgSurveyList.Columns.Add(colSurveyName);

现在我加了一个模版列,
<Columns>      
    <asp:TemplateColumn       HeaderText= "审核 "       >      
    <ItemTemplate>      
    <asp:DropDownList   ID= "chk "       Runat= "server "> </asp:DropDownList   >      
    </ItemTemplate>      
    </asp:TemplateColumn>      
</Columns>    

问题有两个:
1.在页面加载的时候,DataGrid中绑定的列都可以将数据自动的显示出来,可是模版列显示的数据也应该是从数据库中读出来的啊,而不是默认的值,应该如何去做?  

2.这个是小问题,就是模版这一列,在所有列的前面,如果控制这个模版列显示的位置??比如让他在最后一列显示?

------解决方案--------------------
<Columns>
<asp:TemplateField>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "数据库中对应的列名 ").ToString().Trim%>
</ItemTemplate>
</asp:TemplateField>
</Columns>

------解决方案--------------------
<asp:DropDownList .....SelectedValue= ' <%#Eval( "ColumnName ")%> '/>
------解决方案--------------------
第一个问题1楼的正解!!
<asp:DataGrid id= "DataGrid1 " style= "Z-INDEX: 102; LEFT: 184px; POSITION: absolute; TOP: 280px "
runat= "server " AutoGenerateColumns= "False ">
<Columns>
<asp:TemplateColumn HeaderText= "3 ">
<ItemTemplate>
<asp:Label runat= "server " Text= ' <%# DataBinder.Eval(Container, "DataItem.333 ") %> '>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField= "111 " HeaderText= "1 "> </asp:BoundColumn>
<asp:BoundColumn DataField= "222 " HeaderText= "2 "> </asp:BoundColumn>
</Columns>
</asp:DataGrid>