职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 860|回复: 0

一个dataGrid的嵌套单选项

[复制链接]
蓝色梦幻 发表于 2008-8-28 17:51 | 显示全部楼层 |阅读模式
甲方给了我设计的样式,我一看头大了,知道这下不好做了。
表格一列中,左列是父类的名称,中间是子类的所有名称包括前面有一个单选按钮,后面是一列其它的。
想到用嵌套DataGrid,查了最少半个小时的网上资料,还是没有我要的。最后在开发经理的提醒下,我终于决定自己做。
说起来挺麻烦,把代码帖出来吧:有心得的可以交流下啊
前台.aspx代码:
<%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"testGridLayout.aspx.cs\" Inherits=\"testGridLayout\" %>

<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">

<html xmlns=\"http://www.w3.org/1999/xhtml\" >
<head runat=\"server\">
    <title>无标题页</title>
</head>
<body>
    <form id=\"form1\" runat=\"server\">
    <div>
        <aspataGrid   ID=\"DataGrid1\"  runat=\"server\" DataKeyField=\"ID\" AutoGenerateColumns=\"False\"
                                                Width=\"100%\"  HeaderStyle-BackColor=\"#78A9CD\"
                                                HeaderStyle-CssClass=\"fontwhite\" BackColor=\"White\" BorderColor=\"#AFCDE2\" BorderWidth=\"1px\"
                                                CssClass=\"font1\"  HeaderStyle-HorizontalAlign =\"center\" >
            <Columns>
                 <asp:TemplateColumn SortExpression=\"Name\" HeaderText=\"版块\" >
                    <ItemTemplate>
                        <%# DataBinder.Eval(Container.DataItem, \"Name\")%>
                    </ItemTemplate>
                     <ItemStyle HorizontalAlign=\"Center\" BorderColor=\"#AFCDE2\" BorderWidth=\"1px\" />
                </asp:TemplateColumn>
               
                <asp:TemplateColumn SortExpression=\"Expenses\" HeaderText=\"请选择其中一项\">
                    <ItemTemplate>
                       <asp:RadioButtonList ID=\"RadioButtonList1\" runat=\"server\" AutoPostBack=\"True\"  DataTextField =\"Name\" DataValueField =\"ChildFlag\"  DataSource=\'<%#GetOneSource(DataBinder.Eval(Container.DataItem, \"Name\").ToString(), DataBinder.Eval(Container.DataItem, \"ChildFlag\").ToString())%>\' RepeatLayout=\"Flow\" RepeatDirection=\"Horizontal\">
                        </asp:RadioButtonList>
                    </ItemTemplate>
                    
                </asp:TemplateColumn>
               
                 <asp:TemplateColumn SortExpression=\"Expenses\" HeaderText=\"资费\">
                <ItemTemplate>
                    <%# DataBinder.Eval(Container.DataItem, \"Expenses\")%>
                </ItemTemplate>
                 <ItemStyle HorizontalAlign=\"Center\" BorderColor=\"#AFCDE2\" BorderWidth=\"1px\" />
               </asp:TemplateColumn>
              </Columns>
            <HeaderStyle BackColor=\"#78A9CD\" CssClass=\"fontwhite\" HorizontalAlign=\"Center\" />
        </aspataGrid>
        <asp:HiddenField ID=\"HiddenField1\" runat=\"server\" />
        <br />
        <asp:Button ID=\"Button1\" runat=\"server\" OnClick=\"Button1_Click\" Text=\"Button\" /></div>
    </form>
</body>
</html>
后台..CS代码:
public partial class testGridLayout : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(HiddenField1.Value);
        if (!IsPostBack)
        {
            int iCount;
            DataTable dt = 只有父类的表集合;
            DataGrid1.DataSource = dt;
            DataGrid1.DataBind();
        }
      
    }
  
    public DataTable  GetOneSource(string name, string key)
    {
      
        DataTable dt = new SourceModule().SearchByOriginKey(2, key);
        for (int i = 0; i < DataGrid1.Items.Count; i++)
        {
            RadioButtonList aa = (RadioButtonList)DataGrid1.Items.Cells[0].FindControl(\"RadioButtonList1\");
            aa.DataSource = dt;
            aa.DataValueField = \"要取的子类ID\";
            aa.DataTextField = \"要到的子类名称\";
        }
         return dt;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        StringBuilder choice = new StringBuilder();
        for (int i = 0; i < DataGrid1.Items.Count; i++)
        {
            RadioButtonList aa = (RadioButtonList)DataGrid1.Items.Cells[0].FindControl(\"RadioButtonList1\");
            for (int j = 0; j < aa.Items.Count; j++)
            {
                if (aa.Items[j].Selected == true)
                {
                    choice.Append(aa.Items[j].Value);
                    choice.Append(\",\");
                }
            }
        }
        HiddenField1.Value = choice.ToString().Substring(0,choice.Length-1);
    }
  }
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-2 18:12 , Processed in 0.120966 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表