ATPKING

菜,终究一天会成为历史。
随笔 - 13, 文章 - 0, 评论 - 18, 引用 - 0
数据加载中……

2008年9月24日

gridview 中自定义分页

     摘要: 在gridview 的分页当中,是相当的个抑郁,有1 2 3 的地方没有向上向下,有向上向下的地方又没有1 2 3 导航所以抽了个空自定义了一个,效果给大家看下当然 没有大动干戈的重写一个gridview 控件而是写了一个pageManager 类来对gridview 的page进行控制ok,个人认为注释还凑合代码如下[代码]调用的时候非常方便,就在相应的地方实例化一个对象,之后执行dopagin... 阅读全文

posted @ 2008-09-24 15:57 Atpking 阅读(113) | 评论 (1)编辑

2008年8月30日

在 Gridview 分页上添加“上一页,下一页,共X页”等信息

最近在做一个小项目的时候

 

用户提出Gridview 自带的分页不行,必须要有“上一页”,“下一页” 等按钮的要求

 

在网上搜了一些,感觉都属于那种“杀鸡用牛刀”的类型,

 

重写了很多的代码,感觉不是很爽,

 

于是自己摸索着,写了个比较简单的grivdview 分页,我个人觉得还是很好用的,效果图如下

 

-----------------------------------------------------

 

 

-------------------------------------------------------------

 

原理比较简单,

 

就是利用GridView 在RowCreated事件上做个手脚,

 

当if (e.Row.RowType == DataControlRowType.Pager) 时

 

加入几个Button 和Label  之后再给他们写个事件就ok了

 

当然我觉得最有意思的就是最后的pager里面的对象嵌套。。。

 

拉出来一句

 

  e.Row.Controls[0].Controls[0].Controls[0].Controls[0].Controls.AddAt(0, (Button_IndexFirst));

 

其中各个对象的含义,这里只做个参考给大家

Pannel对象->Table对象->TableRow对象->TableCell对象    恩  貌似是这样的。

 

雕虫小技,以博众高手一笑

 

以下是代码

Code

 

 

 

恩,说说问题吧,

 

从PageButtonClick事件里面充斥着GridView1就可以看出,如果有多个GridView 的话,

 

这个就是很抑郁的一件事,

 

本人小菜一个,没研究出来怎样让pagerButtonClick 判断出来是哪个GridView 点的button

 

这就是一个抑郁的遗憾。。。。。。

 

ok,期待博友的回复,先谢过了。

 

 

 

 

 

 

posted @ 2008-08-30 14:53 Atpking 阅读(299) | 评论 (7)编辑

2008年6月6日

权限设计 以及 树的存储

平时看到各位园子的朋友真的很厉害,设计了很多关于权限管理的东西,

很羡慕,但同时也觉得在一些小型项目上,那样的设计是否有点设计过度呢

其实这也说不清,可能是自己资历尚浅,还没看明白各位高人的设计

自己也写了个,帖出来请教下园子的各位朋友

用PD 弄了个图,

权限设计1

这里想说明的是关于部门表和模块表的 索引 字段

因为大家都知道部门是树结构的数据

那么怎样来体现这个树结构,成了很有意思的事情,

原来我的设想是 添加字段 “FatherElement”   ,记录父节点的id  

但是考虑到这个遍历表会遍历很多遍,效率貌似比较低

于是采用第二种方法

添加字段"ElementIndex" 之后编号规则为,父节点编号 + 双位自己的编号

考虑到方便处理,设置起始编号为10

如果不太明白的话,举个例子

博客园   里面有 新手区,精华区,新手区有这个blog 于是编号如下

------------------------------------------------------------

Name                                              Index

------------------------------------------------------------

博客园                                            10

博客园新手区                                 1010

博客园精华区                                 1011

博客园新手区的第一篇文章            101010

博客园新手区的第二篇文章            101011

------------------------------------------------------------

这样的话,当用select 语句的时候,读到一个记录后就可以以它的索引加"__"寻找它的字节点了,

写个递归,一个树就轻松加愉快的出来了。

 

这是自己做的个生成Ext中tree 所需要的代码。

 

欢迎博客园各位达人能给小弟一些意见,建议,本人在此先谢谢了。

 

 

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
 
 
/// <summary>
/// 在这里我使用了theModule.xsd作为我的数据提供,
///最后的筛选条件是 WHERE ModuleIndex LIKE @theIndex
/// <author>
/// ATPKING
/// </author>
/// <time>
/// 2008-6-5
/// </time>
/// </summary>
public class BuildModuleTree
{
    private StringBuilder JsonStr;
    public BuildModuleTree()
 
    {            }    /// <summary>
    /// 建立一个Json形式的字符串,来自于表Module,使用一个索引编号制定根节点。
    /// </summary>
    /// <param name="rootModuleIndex">根节点的编号</param>
    /// <returns></returns>
    public string buildModuleTree(string rootModuleIndex)
    {
        JsonStr = new StringBuilder();
        string theIndex = rootModuleIndex + "__";
//根据索引设计规则,它的子节点必然为它自身的节点再加两位
        
        theModule.ModuleDataTable themodule = this.theModule(theIndex);
//返回一个强类型的datatable
        this.buildTree(themodule);
        JsonStr.Remove(0, 9);
        return JsonStr.ToString();
    }
    /// <summary>
    /// 建立一个Json形式的字符串,来自于表Module,从根节点开始执照
    /// </summary>
    /// <returns></returns>
    public string buildModuleTree()
    {
        string temp = this.buildModuleTree("");
        return temp;
    }
 
 
    private void buildTree(theModule.ModuleDataTable themodule)
    {
        JsonStr.Append("children:[");//建立子结点
        foreach (theModule.ModuleRow row in themodule)
        {
            JsonStr.Append("{ ");
            
            JsonStr.Append("text:");//此为ModuleName
            JsonStr.Append("'" + row.ModuleName + "'");
 
            string tempIndex = row.ModuleIndex;//获取这个节点的索引
 
            theModule.ModuleDataTable tempModule = 
     this.theModule(tempIndex + "__");//获取此节点的子节点表
            if ( tempModule.Rows.Count == 0 )   //如果子节点表为空
            {
                JsonStr.Append(",leaf:true");   //则标记该节点为叶子节点
            }
            else
            {
                JsonStr.Append(",");            //如果该节点的子节点表不空,
                buildTree(tempModule);          //递归查询子节点
            }
            JsonStr.Append("},");
        }
        JsonStr.Remove(JsonStr.Length - 1, 1);
        JsonStr.Append("]");
    }
    /// <summary>
    /// 返回一个theModule的强模型
    /// </summary>
    /// <param name="tempIndex">子模块的索引</param>
    /// <returns></returns>
    private theModule.ModuleDataTable theModule(string tempIndex)
    {
        theModuleTableAdapters.ModuleTableAdapter temp1 = 
new theModuleTableAdapters.ModuleTableAdapter();
        return temp1.GetData(tempIndex);
    }
}

posted @ 2008-06-06 20:13 Atpking 阅读(348) | 评论 (2)编辑

2008年5月20日

初试asp.net Ajax

最开始在IBM 的网站上看ajax 的使用,

其实脑袋比较大,因为毕竟ibm 用jsp ,php 的比较多,有的看不明白

所以试了下vs 2008中自带的ASP.NET AJAX 控件

效果不错 

1、ScriptManager 控件,asp.net ajax 的服务控件,若要使用ajax,则添加此控件,目前状况来说,一切默认即可。

2、UpdatePanel 控件,实现异步刷新的容器,里面含有<ContentTemplate> 以及<Triggers>,看名字就可以知道其作用

<ContentTemplate>放需要异步刷新的东西,<Triggers>放触发刷新的控件 ,特别指出的是,在<Triggers> 中

的<asp:AsyncPostBackTrigger> 的EventName属性,不是指事件的方法名,而是直接就是事件名   比如说timer

控件的事件名为:Tick,事件实现的方法名为Timer1_Tick。。。切勿填写错误。。。

 

 

自己做了一个很简单的例子来试验ASP.NET AJAX 的功能:异步刷新时间,代码如下:

Default.aspx代码

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
</asp:UpdatePanel>
<asp:Timer ID="Timer1" Interval="1000" runat="server" ontick="Timer1_Tick">
</asp:Timer>
</div>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</form>
</body>
</html>
Default.aspx.cs 代码
 
 
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Timer1.Enabled = true;
}
protected void Timer1_Tick(object sender, EventArgs e)
{
Label1.Text =  System.DateTime.Now.ToString();
Label2.Text = System.DateTime.Now.ToString();
}
}
 
 
 
多多交流。。。。

posted @ 2008-05-20 16:30 Atpking 阅读(32) | 评论 (0)编辑

2008年5月17日

自己写的一个通过对象更新数据库的例子

     摘要: 自己很菜,只是想多多交流,希望得到大家的支持另外想咨询下大家,大家用的绘制UML图的软件除了rose,一般还有什么?故事是这样的做ext 的时候,我们老师说json 在ext 最通用,于是乎,我们后台组和前台组的传递就靠 json 本来是准备用dataset 放数据的 但是有个同学下了个json.net 这个插件 可以实现 对象转json 的功能我自己拿dataset 实验,发现不行,之后我们又搜... 阅读全文

posted @ 2008-05-17 22:27 Atpking 阅读(274) | 评论 (6)编辑

2008年5月11日

从数据库中读数据中寻找若隐若现的OOP

     摘要: 最近因为一直在看ext 所以和json打交道打的比较多,以前都是习惯性的把数据读到dataset之后调用ConvertToJson方法(博客园有这个,只不过与ext的json稍微有点bug,更正在下面)usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usi... 阅读全文

posted @ 2008-05-11 17:44 Atpking 阅读(163) | 评论 (2)编辑

2008年5月1日

关于.net 中调用script的alert后 css失效的办法

最近碰到个问题,平常在aspx页面中使用alert后,页面上的css就失效了

查了下网络,用以下语法即可避免css失效

            this.RegisterClientScriptBlock("js", "<script>alert('搜藏完毕')</script>");

posted @ 2008-05-01 17:48 Atpking 阅读(62) | 评论 (0)编辑

2008年4月21日

cs文件生成SqlDataSource,让aspx看着更清爽些

     摘要: 做项目的时候,常常写的是SqlDataSource 在aspx 文件里满天飞看着一堆一推的,自己都觉得难受,之后写了个在cs中生成的,看着就舒服多了不说别的了,上代码1/**//*----------------------------------------------------------------------------2*代码作者:ATPKING来自cnblogs.com3*版本号码:... 阅读全文

posted @ 2008-04-21 11:16 Atpking 阅读(67) | 评论 (0)编辑

2008年4月13日

使用datalist两排显示数据

平时用datalist 总是一列显示数据,

今天做项目的时候  有很多选项,

一列放进去不好看
 
于是想了个办法放两行的 

代码如下

<asp:Panel ID="divOfPlanBooks" runat="server">
        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="sourceOfPlanBooks">
            <ItemTemplate><li><a href=article_show.aspx?id=<%#Eval("dq_plid")%>>><%#Eval("dq_ptitle")%></a></li></ItemTemplate>
        </asp:Repeater>
        <asp:SqlDataSource ID="sourceOfPlanBooks" runat="server" ConnectionString="<%$ ConnectionStrings:YJS_CTConnectionString %>"
            SelectCommand="SELECT TOP 8 dq_plid, dq_ptitle, dq_releaseTime, dq_clickTimes, dq_context, dq_author, dq_neRank, plTag, pl_planTpye, pl_planToClassTpye, pl_pansState, pl_moneyTime, pl_moneyObject, pl_giveStock, pl_needMoney, pl_money_Sort, pl_howToQuit FROM dq_planBooks1 ORDER BY dq_releaseTime DESC">
        </asp:SqlDataSource>
</asp:Panel>


posted @ 2008-04-13 14:51 Atpking 阅读(56) | 评论 (0)编辑

2008年3月30日

通过asp.net 生成xml文件

做项目的时候ext需要xml数据,顺手就用asp.net 导了个,如下:     

private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  SqlConnection   sc=new   SqlConnection("server=localhost;database=northwind;user   id=sa;password=");  
  sc.Open();  
  SqlCommand   scd=new   SqlCommand("SELECT   ProductID,   ProductName   FROM   Products   WHERE   CategoryID   =   1   ORDER   BY   ProductID",sc);  
  SqlDataAdapter   sda=new   SqlDataAdapter(scd);  
  DataSet   ds=new   DataSet();  
  sda.Fill(ds,"product");  
  sc.Close();  
   
  MemoryStream   ms=new   MemoryStream();  
  ds.WriteXml(ms,XmlWriteMode.IgnoreSchema);  
   
  ms.Position=0;  
  StreamReader   sr=new   StreamReader(ms);  
  Page.Response.Write(sr.ReadToEnd());  
  sr.Close();  
  }

posted @ 2008-03-30 00:49 Atpking 阅读(89) | 评论 (0)编辑