玻璃箱

玻璃箱
 
 

Powered by: 博客园
模板提供:沪江博客
博客园 | 首页 | 发新随笔 | 发新文章 | 联系 | 订阅订阅 | 管理

2004年9月22日

实现WAP中的右软键功能
posted @ 2004-09-21 16:41 Taye 阅读(1182) 评论(0) 编辑
 

2004年9月9日

关于ControlDesigner.GetDesignTimeHtml()的实现设计时UI的讨论
在ControlDesigner.GetDesignTimeHtml()中,你是自己编写DesignTimeHtml,还是借助base.GetDesignTimeHtml()来完成?

看了这个文章..所以想写点东西[好看只有看过其它人的东西才会勾起自己的写作欲望 ]

在自定义控件最后在完成时,一般都会写.GetDesignTimeHtml()以期实现在设计时表现的HTML

如使用一般的HTML的堆砌,那样的话对一般的简单的表现还好,如果是复杂一些的控件表现那可是工作量非常大的工作,特别是对控件的样式表现[如背景,字体,border样式.等]
如
string html;
html 
= "<Table border='"
html 
+= tablestyle.BorderWidth.ToString()




那样做真是要疯掉

但如果是这样
TableStyle style = new TableStyle();
            Table tb 
= new Table();

            TableRow row;
            TableCell cell;

            
for(int i = 0; i < 3 ; i ++)
            
{
                cell 
= new TableCell();
                row 
= new TableRow();

                cell.Text 
= i.ToString();

                row.Cells.Add(cell);

                tb.Rows.Add(row);
            }



            tb.ApplyStyle(style);

            StringWriter sw 
= new StringWriter();
            HtmlTextWriter hw 
= new HtmlTextWriter(sw);

            tb.RenderControl(hw);

            
return sw.ToString();

这样就非常容易的取得到了一个已经应用来TableStyle的表格的HTML,
当面对比较复杂,如比较多个控件组合在一起时格外有用,

而且在设计时的表现也是非常理想的...
当然可能会有更佳的办法来解决这个问题,可以一起讨论一下.

posted @ 2004-09-08 22:03 Taye 阅读(1433) 评论(2) 编辑
 

2004年8月18日

[原创]读出数据库数据,控制显示长度!
http://www.cnblogs.com/kary/archive/2004/08/16/33830.aspx
看到这个文章,所以讨论了一下..但个人还是感觉用CSS用来得更直接方便一些,不必在后代码很辛苦的搞
不过要多一个标记...因为text-overflow似乎不能应用至<td>
但使用一个div还算能接受

HTML代码
    <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="300" border="1">
                
<TR>
                    
<TD width="100"><div class="css1">你们真的是来上自习的吗?</div>
                    
</TD>
                    
<TD width="100">1</TD>
                    
<TD width="100">1</TD>
                
</TR>
            
</TABLE>

CSS
.css1
{}{
    white-space
:nowrap;
    overflow
:hidden;
    text-overflow
:ellipsis;
    width
:100px;
}
posted @ 2004-08-17 15:56 Taye 阅读(790) 评论(1) 编辑
 

2004年7月15日

OpenWave 6.2.2的配置
如果你在使用OpenWave+VS.NET时发生
malformed server response.
错误时按以下方法来配置试试看


1) Select Tools -> Options
2) Click on the Server Tab
3) Click Add
4) A dialog will come up asking if you want to use HTTP Direct Select Yes
5) Give the profile a name (apache)
6) Click OK
7) Select the profie you just created and click The Edit button
8) Uncheck the HTTP Direct box and put 127.0.0.1 in the Gateway field
9) Click Ok
10) Select your new profile and click Activate
posted @ 2004-07-15 02:24 Taye 阅读(602) 评论(1) 编辑
 

2004年7月8日

[导入]HTMLButton控件下的Confirm()

作者:Taye
一、前言

在ASP.NET中大部分如删除等一些动作为了友好都为添加confirm('')来弹出消息框进行提示,但是HTML控件和WEB控件是否使用的方法是一样的呢?

二、方法

A. System.Web.UI.WebControls.Button控件

现在一般都是这样

在Page_Load中添加

this.Button1.Attributes.Add("onclick","javascript:return confirm('ok')");

B、System.Web.UI.HtmlControls.HtmlInputButton控件

来达到目的..而假设为在HTML控件中进行上述操作

this.Button2.Attributes.Add("onclick","javascript:return confirm('ok')");

当然你也可以直接在HTML中

id="Button2" type="button" onclick="javascript:return confirm('ok?')" value="Button" name="Button2" runat="server"

 

再运行,首先他会提示缺少;

 

这时打开HTML代码

可以看到

input language="javascript" onclick="javascript:return confirm('ok') __doPostBack('Button2','')" name="Button2" id="Button2" type="button" value="Button"

 

可以清楚的看到不仅仅是少了;而已

而要添加上

if(!confirm('ok')){return};

否则是永远也不会运行它的回发事件的,

C、其它控件

现在试试其它控件

protected System.Web.UI.WebControls.ImageButton ImageButton1;

protected System.Web.UI.WebControls.LinkButton LinkButton1;

protected System.Web.UI.HtmlControls.HtmlInputButton Reset1;

protected System.Web.UI.HtmlControls.HtmlInputButton Submit1;

同样在Page_Load中添加代码,运行都可以正常的运行..

打开HTML你可以看到..它们是怎么回发
打开发现只有LinkButton在href属性中有__doPostBack(),并不是在click事件中所以不会发生上面现象
而其它几个控件则就没有使用__doPostBack()

   D、小技巧

在DataGrid中其实可以用更容易的方法来对删除等消息框的处理只要在这里添加
<div onclick=”return confirm(‘
确定删除吗?’)”>删除</div>
如图

三、总结

通过上面可以看出要添加Attribute时要注意各个控件的区别和差异,添加Attribute要根据各个控件的特性来分别来对待.

 


文章来源:http://mblogger.cn/taye/posts/21146.aspx
posted @ 2004-07-08 02:52 Taye 阅读(682) 评论(0) 编辑
 
[导入]DataGrid中的bool值转换成"是"与"否"
有很多人问如何在DataGrid中显示是与否的显示方法..其实还是比较容易实现的.


<asp:TemplateColumn HeaderText="情况">
<ItemTemplate>
<%# (bool)DataBinder.Eval(Container,"DataItem.IsActive")?"是":"否"%>
</ItemTemplate>
</asp:TemplateColumn>

文章来源:http://mblogger.cn/taye/posts/21200.aspx
posted @ 2004-07-08 02:52 Taye 阅读(753) 评论(1) 编辑
 
[导入]关于DataGrid等控件中的自动编号

作者:Taye
论坛中有很多人问关于
DataGrid的自动编号问题,但在论坛中我已经回复过好几次,但还是不断有人问

序号

内容

1

Taye

2

BOx

3

Glass

4

StarCraft


一、正序

A、AllowPaging=False情况下

<asp:DataGrid id="DataGrid1" runat="server">
    <Columns>
     <asp:TemplateColumn>
      <ItemTemplate>
       <%# Container.ItemIndex + 1%>
      </ItemTemplate>
     </asp:TemplateColumn>
    </Columns>
 </asp:DataGrid>


就可以实现

不过更有趣的方法是使用这个方法

 <asp:DataGrid id="DataGrid1" runat="server">
    <Columns>
     <asp:TemplateColumn>
      <ItemTemplate>
       <%# this.DataGrid1.Items.Count + 1%>
      </ItemTemplate>
     </asp:TemplateColumn>
    </Columns>
 </asp:DataGrid>

 

也许有些人会觉得很奇怪为什么Items.Count会这样,而不是出来全部总合..但如果你了解绑定的过程时就容易理解.
[
从上面来看就是在ItemCreated事件中进行绑定所以得到的Items.Count刚好是当前的序号]

B
、AllowPaging="True"下
如果你DataGrid支持分页则可以如下

<asp:DataGrid id="DataGrid1" runat="server" AllowPaging="True">
    <Columns>
     <asp:TemplateColumn>
      <ItemTemplate>
       <%# this.DataGrid1.CurrentPageIndex * this.DataGrid1.PageSize + Container.ItemIndex + 1%>
      </ItemTemplate>
     </asp:TemplateColumn>
    </Columns>
</asp:DataGrid>

 

二、倒序的方法

序号

内容

4

Taye

3

BOx

2

Glass

1

StarCraft

由上面可以知道使用
this.DataGrid1.Items.Count -
Container.ItemIndex + 1方法是不可能实现的,得到值而且全会为1
分页的情况下更是一样.所以一开始我们就要取得数据源的行数

.cs

             private int rowscount = 0;

         protected int RowsCount

         {

              get{ return rowscount;}

              set{ this.rowscount = value; }

         }

    

         private void Page_Load(object sender, System.EventArgs e)

         {

              // 在此处放置用户代码以初始化页面

              if(!IsPostBack)

                   this.BindData();

         }

 

         private void BindData()

         {

              SqlConnection cn = new SqlConnection("server=(local);database=NorthWind;uid=sa;pwd=");

              string str=@"SELECT Employees.EmployeeID, Orders.EmployeeID

                                 FROM Employees INNER JOIN

                       Orders ON Employees.EmployeeID = Orders.EmployeeID ";

 

              SqlDataAdapter sqlda = new SqlDataAdapter(str,cn);

              DataSet ds = new DataSet();

 

              sqlda.Fill(ds);

 

              this.RowsCount = ds.Tables[0].Rows.Count;

 

              this.DataGrid1.DataSource = ds;

              this.DataGrid1.DataBind();

 

         }



.aspx

<asp:DataGrid id="DataGrid1" runat="server" AllowPaging="True">

                            <Columns>

                                   <asp:TemplateColumn>

                                          <ItemTemplate>

                                                 <%# RowsCount - DataGrid1.CurrentPageIndex * DataGrid1.PageSize - Container.ItemIndex %>

                                          </ItemTemplate>

                                   </asp:TemplateColumn>

                            </Columns>

                     </asp:DataGrid>

 

 当然如果是不是分页的情况一下更容易实现了.


文章来源:http://mblogger.cn/taye/posts/21240.aspx
posted @ 2004-07-08 02:52 Taye 阅读(1389) 评论(2) 编辑
 
[导入]WeBeditBox1.2说明

WEBEDITBOX1.2详细说明[下载]

1、  功能特点
WebEditBox
是一款Html编辑器,提供类似WORD等高级编辑功能,专门为ASP.NET设计的一款控件.,
它除了提供类似其它同类的编辑器同亲的功能外,更简化了配置..只要直接进行添加控件就可以正常运行..而免除了一些类似FreetextBox.FckEditor要进行图片.XML文档及其它配置…为用户提供最简便的配置和同样的功能



2、  开发及使用环境

a)        开发环境:WinXp Pro Sp1 + FreameWork 1.1

b)        开发语言 C#,JavaScript

c)         使用环境: Visual Studio .NET 2003(以下简称VS)

d)        IE最低要求     IE5.5 ++


3、  安装及使用方法

a)        安装方法

                         i.              您下载控件后..将得到解压后得装得到TayeWorks.WebEditBox.dll及ChoiceImage.aspx文件. ChoiceImage.aspx为一上传图片及选择图片一示例..根据实际情况您可以制作自己的上传及选择图片页

                       ii.              打开您的VS在工具栏右键[如果您对添加控件已经了解..您可以跳过 ii 以后的内容]

选择 添加/除项

                      iii.              选择解压的TayeWorks.WebEditBox.dll.后将可以看到将有WebEditBox出现.选中

确定

                     iv.              在您选择的选项卡中将增加WebEditBox控件.这样您就可以开始使用WebEditBox


b)        使用方法
您可以使用其它控件一样使用它..直接拖放到你要想放的位置就可以
但请您注意
!!您必须在<%@ Page validateRequest=false %>添加validateRequest=false才能正常使用
!!
如果您要进行快速的设定进行设定请将QuicklySetting 设置为 True
!!
您可能要对上传图片页进行自己的配置您只要将UploadPage指到ChoiceImage.aspx或您自己的页

您在后台中可以使用这样的方法来取得内容

private void Button1_Click(object sender, System.EventArgs e)

              {

                   Response.Write(this.WebEditBox3.Text);

}

c)         关于控件的样式
WebEditBox
提供了丰富的样式选择..你可以根据自己的要求来进行完成您自己所要的样式
如图

更多具体样式您可以在使用发现..

4、  更多资料
您想了解更多关于WebEditBox的消息或有相关问题及相关BUG,您可以通过
http://Taye.MBlogger.Cn/
http://www.ChinAspx.Com/Comm/Dotnetbbs/
或发邮件至Taye2004@vip.etang.com和我联系..

 


文章来源:http://mblogger.cn/taye/posts/22416.aspx
posted @ 2004-07-08 02:52 Taye 阅读(571) 评论(0) 编辑
 
[导入]DataGrid中创建复杂表头方法
有时候经常在DataGrid有复杂表头的显示要求但DataGrid本身并不提供这方面的解决方法,现在对这个问题做个讨论
1)添加一个table
创建跨多列、多行表头的DataGrid[http://www.csdn.net/Develop/Read_Article.asp?Id=18971]
这是CSDN中net_lover的一个文章可以
个人观点:可以解决一些问题,但并不能冶本,只是冶标而已.

2)在Pager中添加
这也是CSDN的一个文章,具体方法是在Pager创建时将Pager列去掉而和Header一起形成两行表头(注Pager会在Header前先建立)
但要添加三行以上时...可能会有点麻烦,对二行来说是最好的选择了

3)我现在介绍另一种利用JavaScript来形成表头的方法.
[个人感觉还好..能形成复杂的表头]

其它就不多说了就把这个代码写一下,希望对大家有帮助

         SqlConnection Cn=new 

SqlConnection(System.Configuration.ConfigurationSettings.AppSettings.Get("Cnstr"));
         SqlDataAdapter SqlDa=new SqlDataAdapter("SELECT * FROM jobs",Cn);
         DataSet ds=new DataSet();
         SqlDa.Fill(ds);
         this.DataGrid1.DataSource=ds;
         this.DataGrid1.DataBind();


         string javaScript;
         javaScript="<script language='javascript'>";
      

         javaScript+=@"   
         function addrow()
         {
             var oRow=document.all(obs).insertRow(0);
             var oCell0=oRow.insertCell();
             with(oCell0)
             {
                innerText='hello';
             
             }
            var oCell1=oRow.insertCell();
            with(oCell1)
            {
               innerText='Kitty';
            }
            var oCell2=oRow.insertCell()
            with(oCell2)
            {
               innerText='Lvl';
               colSpan='2';
            }
            
         }
         addrow();
         ";
         javaScript=javaScript.Replace("obs","'" + this.DataGrid1.ClientID +"'");
         javaScript+="<";
         javaScript+=@"/";
         javaScript+="script>";

         Page.RegisterStartupScript("ss",javaScript);


以上代码是对pubs数据库的操作
总体来说是用insertRow()和insertCell()来进行的..
然后用with(oCell)来进行里面的样式控制..

文章来源:http://mblogger.cn/taye/posts/22534.aspx
posted @ 2004-07-08 02:52 Taye 阅读(1350) 评论(2) 编辑
 
[导入]关于日期的显示与输入
[原载于Chinaspx.com]
本来不想对日期格式化这个问题写多少的.
因为在VS.NET中有SDK文档中就有很详细的介绍.怕有盗名的嫌疑.不过在论坛上有不人问这个问题我就在

这里进行简单的介绍(以下都以C#代码)
这篇文章只对于日期格式不甚了解的朋友.

ms-help://MS.NETFrameworkSDKv1.1.CHS/vblr7net/html/vafmtUserDefinedDateFormats.htm
是SDK中详细文档.
1)日期格式化显示
在SQL中DateTime为8位长度日期的指定形式为2003-12-31 

00:00:00而在ASP.NET上最常用的只是2003-12-31号一部分而已你可以使用
DateTime.Now.ToString("d")或DateTime.Now.ToShortDateString();
不过具体格式是2003/12/31还是2003-12-31的话要看你的系统配置日期配置是哪一种.
你要想确定取得2003-12-31指定的话使用.Tostring()用户自定义格式
格式的字符可以看上面说到的文档.
如.ToString("yyyy-MM-dd")返回2003-11-25 
  .ToString("yyyyMMdd")返回20031125
[转自SDK中的文档]
d    将日显示为不带前导零的数字(如 1)。如果这是用户定义的数字格式中的唯一字符,请使用 

%d。 
dd    将日显示为带前导零的数字(如 01)。 
ddd    将日显示为缩写形式(例如 Sun)。 
dddd    将日显示为全名(例如 Sunday)。 
M    将月份显示为不带前导零的数字(如一月表示为 1)。如果这是用户定义的数字格式中的唯一

字符,请使用 %M。 
MM    将月份显示为带前导零的数字(例如 01/12/01)。  
MMM    将月份显示为缩写形式(例如 Jan)。 
MMMM    将月份显示为完整月份名(例如 January)。 
gg    显示时代/纪元字符串(例如 A.D.) 
h    使用 12 小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)。如果这是用户定义的数

字格式中的唯一字符,请使用 %h。 
hh    使用 12 小时制将小时显示为带前导零的数字(例如 01:15:15 PM)。 
H    使用 24 小时制将小时显示为不带前导零的数字(例如 1:15:15)。如果这是用户定义的数字

格式中的唯一字符,请使用 %H。 
HH 使用 24 小时制将小时显示为带前导零的数字(例如 01:15:15)。 
m    将分钟显示为不带前导零的数字(例如 12:1:15)。如果这是用户定义的数字格式中的唯一字

符,请使用 %m。 
mm    将分钟显示为带前导零的数字(例如 12:01:15)。 
s    将秒显示为不带前导零的数字(例如 12:15:5)。如果这是用户定义的数字格式中的唯一字符

,请使用 %s。 
ss    将秒显示为带前导零的数字(例如 12:15:05)。 
F    显示秒的小数部分。例如,ff 将精确显示到百分之一秒,而 ffff 将精确显示到万分之一秒。

用户定义格式中最多可使用七个 f 符号。如果这是用户定义的数字格式中的唯一字符,请使用 %f。  
T    使用 12 小时制,并对中午之前的任一小时显示大写的 A,对中午到 11:59 P.M 之间的任一小

时显示大写的 P。如果这是用户定义的数字格式中的唯一字符,请使用 %t。 
tt    使用 12 小时制,并对中午之前任一小时显示大写的 AM;对中午到 11:59 P.M 之间的任一小

时显示大写的 PM。 
y    将年份 (0-9) 显示为不带前导零的数字。如果这是用户定义的数字格式中的唯一字符,请使用 

%y。 
yy    以带前导零的两位数字格式显示年份(如果适用)。  
yyy    以四位数字格式显示年份。 
yyyy    以四位数字格式显示年份。 
z    显示不带前导零的时区偏移量(如 -8)。如果这是用户定义的数字格式中的唯一字符,请使用 

%z。 
zz    显示带前导零的时区偏移量(例如 -08) 
zzz    显示完整的时区偏移量(例如 -08:00) 

同样对时间也可以进行这样的格式化..你可以使用自定义格式来设置你想要的格式输出.
你可以使用上表中各字符进行任意的组合不管前后次序多少如你写入yyyy-yyyy也是可以的..不过我想没

有多少无聊的人会这么做.的以是相当自由的

注意的是:进行格式化的一定要是日期DateTime格式..在SQL中的类型也一样.否则格式无效或出错.特别

是在DataGrid常{0:IFromat}的格式中会用到

2)日期的输入
我们在办理入日期格式式常用DateTime.Pares()
但是这个形式的转换是相当有限的,有些C#是会不懂你写入的日期格式的如20031231大家都明白是2003-

12-31号可以C#不认识他.我们可以这样子进行如下
//设置语言国家
System.IFormatProvider format=new System.Globalization.CultureInfo("zh-CN",true);
//指定转换格式
Response.Write(DateTime.ParseExact(this.TextBox1.Text,"yyyyMMdd",format));
这样他就能看出20031231号的日期格式了

不过可惜他只能够对yyyyMMdd形式进行不能对其它格式进行转换是不是美中不足?
不过.NET提供了另一种重载版本.
public static DateTime ParseExact(string, string[], IFormatProvider, DateTimeStyles);
可对指定的几种日期格式进行转换.
不过具体的操作我想还是大家自己去试验一下效果可能会更好一些

文章来源:http://mblogger.cn/taye/posts/22536.aspx
posted @ 2004-07-08 02:52 Taye 阅读(413) 评论(0) 编辑
 
仅列出标题  下一页