用户操作
[即时聊天] [发私信] [加为好友]
cpp2017(慕白兄)ID:cpp2017
11598次访问,排名9760(2)好友21人,关注者249
好的工具是成功的一半
cpp2017的文章
原创 12 篇
翻译 0 篇
转载 0 篇
评论 25 篇
cpp2017(慕白兄)的公告
由于很多网友经常提到一些问题,所以在此将这些问题整理一下.这里并没有什么很深的技术,只是一些常见且基础的问题,尽量以最简单易懂和浅显的实例,让新学者受到些启发,希望能对他们有帮助,如有不对之处,请不吝批评指正。
最近评论
deltallp:朋友,不能用啊,我用的时候,说是“某一行缺少对象”.郁闷~~~~
jeffcn2:有一个问题,这样在服务器上不是产生了很多Excel文件,还有就是要控制输出的工作表的样式要如何控制(如:我想从A2开始输出,并设置标题为粗体居中?),请达人指点
ucemouse:我在调用File.Copy(,,true)是,提示:文件正在被另一进程使用,其实就是它自己的进程在使用,两个文件是放在同一个目录中的.请求帮助
lex1982:很有创意,我喜欢
xp1056:这个是不是要求.net版本2005以上?我在03里面用的,没体现出效果来。
比如:SetFocusOnError="True"提示验证控件的该属性找不到
文章分类
收藏
    相册
    文件
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Repeater的应用之嵌套和行操作收藏

    新一篇: web自定义控件示例,一个自动分页的datagrid例子 | 旧一篇: 模态窗口中的脚本刷新

    repeater是一个 轻量级的控件,它具有效率高,使用灵活等特点,可以根据用户的不同需求生成比较复杂的界面。以下是一个简单的例子,通过嵌套实现常见的子报表功能。同时也顺便提了一下对它的基本数据的操作。

    请看示例(asp 2.0):

    aspx:

     

    <asp:Repeater ID="rp1" runat="server">
        
            
    <HeaderTemplate>
                
    <table width="100%" border="1" style="border-collapse:collapse;font-size:12px">
                    
    <tr>
                        
    <th align="center" colspan="3">总门员工表</td>
                    
    </tr>
                    
    <tr>
                       
    <th >部门编号</th>    
                       
    <th  colspan="2">部门名称</th>    
                       
                    
    </tr>
                    
                
            
    </HeaderTemplate>
            
    <ItemTemplate>
                   
    <tr bgcolor="#336699" style="color:White">
                        
    <td><%#Eval("id")%></td>
                        
    <td colspan="2"><%#Eval("deptname")%></td>
                        
                   
    </tr>
                  
    <tr>
                     
    <td></td>
                    
    <td>
                        
    <asp:Repeater ID="rp2" runat="server"
                        
                         DataSource
    ='<%#((System.Data.DataRowView)Container.DataItem).Row.GetChildRows("RelationName")%>'
                         
                          OnItemCommand="rp2_ItemCommand"
                         >
                            
                            
    <HeaderTemplate>
                                 
    <table width="100%" cellspacing="0" border="0"  cellpadding="0">
                               
                                
    <tr  bgcolor="#eeeef1" style="color:black">
                                   
    <td align="center">删除</td>
                                   
    <td>员工编号</td>    
                                   
    <td>员工名称</td>   
                                
    </tr>
                                
                            
    </HeaderTemplate>
                            
    <ItemTemplate>
                                 
    <tr>
                                    
    <td align="center">
                                        
    <asp:LinkButton ID="nkbDelete" OnClientClick="javascript:return confirm('真的要删除吗?');" runat="server" Text="删除" CommandName="delete" CommandArgument='<%#Eval("[id]")%>'></asp:LinkButton>
                                        
    <asp:CheckBox ID="chkSel" runat="server" OnCheckedChanged="CheckBoxChanged" KeyID='<%#Eval("[id]")%>' AutoPostBack="true"    />
                                        
    <asp:Button ID="btnDelete" runat="server" Text="删除"   CommandName="delete" CommandArgument='<%#Eval("[id]")%>' /><label id="divDelete"   style="border:solid 1px black;width:60px;" onclick="javascript:this.previousSibling.click();">删除</label>
                                    
    </td>
                                    
    <td><%#DataBinder.Eval(Container.DataItem,"[id]")%>
                                    
    <td><%#Eval("[empname]")%></td>
                                 
    </tr>
                            
    </ItemTemplate>
                            
    <FooterTemplate>
                                
    </table>
                            
    </FooterTemplate>
                        
    </asp:Repeater>
                        
                    
    </td>
                  
    </tr>
                   
            
    </ItemTemplate>
            
    <FooterTemplate>
                  
    </table>
            
    </FooterTemplate>
        
    </asp:Repeater>

     

    后台程序:

     

     protected void Page_Load(object sender, EventArgs e)
        {
             
             
            
    if (!this.IsPostBack)
            {
                
    this._BindRepeater();
            }
             
        }


        DataSet _GetDataSet()
        {

            
    if (ViewState["ds"!= null)
            {
                
    return (DataSet)ViewState["ds"];
            }
            
            DataSet ds 
    = new DataSet();
            DataTable dt 
    = new DataTable();
            dt.Columns.Add(
    "id"typeof(int));
            dt.Columns.Add(
    "DeptName");
            ds.Tables.Add(dt);
            dt.Rows.Add(
    1"市场部");
            dt.Rows.Add(
    2"人力资源部");
            dt.Rows.Add(
    3"金融事业部");
            dt.Rows.Add(
    4"通信事业部");



            dt 
    = new DataTable();
            dt.Columns.Add(
    "id"typeof(int));
            dt.Columns.Add(
    "deptid"typeof(int));
            dt.Columns.Add(
    "empname");
            
    for (int i = 0; i < 20; i++)
            {
                dt.Rows.Add(i, i 
    % 4 + 1"员工" + i.ToString());
            }

            ds.Tables.Add(dt);
            
    ///添加主父子关系
            ds.Relations.Add("RelationName", ds.Tables[0].Columns["id"], ds.Tables[1].Columns["deptId"]);
            ViewState[
    "ds"= ds;
            
    return ds;

        }
        
    void _SaveData(DataSet ds)
        {
            ViewState[
    "ds"= ds;
        }

        
    void _DeleteData(string sID)
        {
            DataSet ds 
    = this._GetDataSet();
            DataTable dt 
    = ds.Tables[1];
          
            DataRow[] row 
    = dt.Select("id=" + sID);
            
    if (row.Length >= 1)
            {
                row[
    0].Delete();
            }

            
    this._SaveData(ds);
        }
        
    void _BindRepeater()
        {

            DataSet ds 
    = this._GetDataSet();
          
            
    this.rp1.DataSource = ds.Tables[0].DefaultView;
            
    this.rp1.DataBind();
     
     
        }

        
    protected void CheckBoxChanged(object sender,EventArgs e)
        {
            CheckBox cb 
    = (CheckBox)sender;
            
    string sID = cb.Attributes["KeyID"];
            
    this._DeleteData(sID);
            
    this._BindRepeater();

        }
        
        
    protected void rp2_ItemCommand(object sender,RepeaterCommandEventArgs e)
        {
           
            
    if (e.CommandName == "delete")
            {
                
    string sID = e.CommandArgument.ToString();
                
    this._DeleteData(sID);
                
    this._BindRepeater();
                
            }
        }

     

    说明:对于repleater的操作。我用了四个基本元素来实现。linkbutton 和button是一样通过指定commandname触发ItemCommand事件,并绑定了CommandArgument以便在后台事件中获取。

    而CheckBox并没有commandname和CommandArgument属性,于是我给它指定了一个自定义的属性KeyID,并绑定数据的id字段。然后在checkbox的事件中获取它的属性进行相关数据操作。

    label的操作,这就借用了button的事件来实现。这里label可换成任何可显示在网页中的html元素。

    发表于 @ 2007年03月22日 22:58:00|评论(loading...)|编辑

    新一篇: web自定义控件示例,一个自动分页的datagrid例子 | 旧一篇: 模态窗口中的脚本刷新

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © cpp2017(慕白兄)