<ASP:DATAGRID id="MyDataGrid" runat="server" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px"
BackColor="White" CellPadding="3" AutoGenerateColumns="False" PageSize="10" AllowCustomPaging="True"
Width="100%">
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
<AlternatingItemStyle CssClass="DataGridAltIttemStyle"></AlternatingItemStyle>
<ItemStyle CssClass="DataGridItemStyle"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" CssClass="DataGridHeaderStyle"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="名称">
<ItemTemplate>
<asp:Label ID="Name" Runat=server Text='<%#DataBinder.Eval(Container, "DataItem.Name").ToString()%>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="层ID">
<ItemTemplate>
<asp:TextBox id="DivId" width="200" Text='<%#DataBinder.Eval(Container, "DataItem.DivId").ToString()%>' Runat="server">
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="权限">
<ItemTemplate>
<!-- 根据字串符分割来动态增加GataGrid模板列的checkboxlist的名称和值 -->
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</ASP:DATAGRID>
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
//得出myIList;
MyDataGrid.DataSource = myIList;
MyDataGrid.DataBind();
}
}
myIList的值有Name,DivId和PurView,正常绑定到DataGrid,如<%#DataBinder.Eval(Container, "DataItem.DivId").ToString()%>
其中<%#DataBinder.Eval(Container, "DataItem.PurView").ToString()%>的值形式如下:
增加$$$Addnew|编辑$$$Modify|
增加$$$Addnew|
增加$$$Addnew|编辑$$$Modify|查询$$$Query|
....
长度可能,总是以$$$和|来分隔。
现在求
<asp:TemplateColumn HeaderText="权限">
<ItemTemplate>
<!-- 根据字串符分割来动态增加GataGrid模板列的checkboxlist的名称和值 -->
</ItemTemplate>
</asp:TemplateColumn>
上面根据<%#DataBinder.Eval(Container, "DataItem.PurView").ToString()%>的值形式来动态以"|"生成这个列的checkboxlist,其中名称对应$$$前面,值为$$$后的字符。
谢谢!
BackColor="White" CellPadding="3" AutoGenerateColumns="False" PageSize="10" AllowCustomPaging="True"
Width="100%">
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
<AlternatingItemStyle CssClass="DataGridAltIttemStyle"></AlternatingItemStyle>
<ItemStyle CssClass="DataGridItemStyle"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" CssClass="DataGridHeaderStyle"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="名称">
<ItemTemplate>
<asp:Label ID="Name" Runat=server Text='<%#DataBinder.Eval(Container, "DataItem.Name").ToString()%>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="层ID">
<ItemTemplate>
<asp:TextBox id="DivId" width="200" Text='<%#DataBinder.Eval(Container, "DataItem.DivId").ToString()%>' Runat="server">
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="权限">
<ItemTemplate>
<!-- 根据字串符分割来动态增加GataGrid模板列的checkboxlist的名称和值 -->
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</ASP:DATAGRID>
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
//得出myIList;
MyDataGrid.DataSource = myIList;
MyDataGrid.DataBind();
}
}
myIList的值有Name,DivId和PurView,正常绑定到DataGrid,如<%#DataBinder.Eval(Container, "DataItem.DivId").ToString()%>
其中<%#DataBinder.Eval(Container, "DataItem.PurView").ToString()%>的值形式如下:
增加$$$Addnew|编辑$$$Modify|
增加$$$Addnew|
增加$$$Addnew|编辑$$$Modify|查询$$$Query|
....
长度可能,总是以$$$和|来分隔。
现在求
<asp:TemplateColumn HeaderText="权限">
<ItemTemplate>
<!-- 根据字串符分割来动态增加GataGrid模板列的checkboxlist的名称和值 -->
</ItemTemplate>
</asp:TemplateColumn>
上面根据<%#DataBinder.Eval(Container, "DataItem.PurView").ToString()%>的值形式来动态以"|"生成这个列的checkboxlist,其中名称对应$$$前面,值为$$$后的字符。
谢谢!
参考:
http://community.csdn.net/Expert/topic/4102/4102652.xml?temp=.805874里面使用的是RadioButtonList,自己改一下就好了
BackColor="White" CellPadding="3" AutoGenerateColumns="False" PageSize="10" AllowCustomPaging="True"
Width="100%">
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
<AlternatingItemStyle CssClass="DataGridAltIttemStyle"></AlternatingItemStyle>
<ItemStyle CssClass="DataGridItemStyle"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" CssClass="DataGridHeaderStyle"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="名称">
<ItemTemplate>
<asp:Label ID="Name" Runat=server Text='<%#DataBinder.Eval(Container, "DataItem.sID").ToString()%>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="层ID">
<ItemTemplate>
<asp:TextBox id="DivId" width="200" Text='<%#DataBinder.Eval(Container, "DataItem.sQustion").ToString()%>' Runat="server">
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="权限">
<ItemTemplate>
<asp:CheckBoxList ID="cbl" Runat="server"></asp:CheckBoxList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</ASP:DATAGRID>
private void MyDataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
/**/
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
CheckBoxList cblt = (CheckBoxList)e.Item.FindControl("cbl");
string strOption = ((DataRowView)e.Item.DataItem).Row.ItemArray[2].ToString();
string[] tmpOption = strOption.Split('|');
for(int i = 0; i<tmpOption.Length;i++)
{
cblt.Items.Add(tmpOption[i]);
}
}
}