【ASP.NET开发】菜鸟时期的.net笔记[about data binding]

.net 笔记摘自《ASP.NET 2.0 第一步》,感谢原作者的指导。

这一篇博文里的笔记带有不少我个人的理解,不懂问我哈,一起探讨。共勉。

1.string.Format()

把每个格式项替换成相应的文本。

eg: string.Format("{0}+{1}={2}","4","6","10"),得出的字符串就是"4+6=10"。{0}、{1}和{2}就是格式项了,最终会由后面的文本替换。{}里面的花样有很多。

2.IndexOf()和LastIndexOf()

用于查找字符串中指定字符或者字符串首次(或最后一次)出现的位置,返回索引值,如果未出现则返回-1.

eg:

  str1.IndexOf("字");//查找"字"在str1中的索引值(位置)

str1.IndexOf("字串");//查找"字串"的第一个字符在str1中的索引值(位置)

str1.IndexOf("字串",3,2);//从str1的第4个字符起,查找两个字符,查找"字串"的第一个字符在str1中的索引值(位置)

3.SubString(参数1,参数2)

截取字串的一部分,参数1为左起始位数,参数2为截取几位。

eg: "Hello World".Substring(0,5)就是"Hello"

4.Split()

根据一个字符把字符串分成几个字符串并以字符串数组返回。

eg:"a,b,c".Split(',')就是{"a","b","c"}。

Split()不支持根据一个字符串来把字符串划分成几块,如果希望把"a<br>b<br>c"分割成{"a","b","c"}的话可以使用一中变通的办法,先把<br>替换成某一个特殊的字符然后再使用Split()分割:

eg:"a<br>b<br>c".Replace("<br>","&").Split('&')

二、数据绑定

1.绑定表达式

在ASP.NET中,<%# %> 是一个绑定表达式,而<%= %>则是一种内联(inline),在页面中数据输出方式类似于Response.Write(),下面给出例子:(我自己亲身试过)

HTML code:

<div>
    <%# str + "1" %>
    <%= str + "2" %>
</div>

C# code:

protected string str = "编程快乐";

protected void Page_Load(object sender,EventArgs e)
{

}

显示结果为: 编程快乐2

原因:数据绑定包括两个过程:

(1)为控件指定绑定表达式,多值绑定时还要设置数据源

(2)对控件进行数据绑定,一般用DataBind()方法

在这里<%# str + "1" %>仅仅是一个数据绑定表达式,它指定了要绑定的数据,却还未执行绑定操作。

所以要使这句话真正起到作用,我们还需要在代码中编写绑定语句:

C# code:

protected void Page_Load(object sender,EventArgs e)
{
    Page.DataBind();
}

这个方法会调用页面上所有控件及其子控件的DataBind方法。

2.绑定特殊区域的数据:<%$ XXX %>

示例:<asp: TextBox runat="server" Text="<%$ AppSettings:Text %>"></asp:TextBox>

这里的AppSettings就是Web.Config文件中的AppSettings节点。除了AppSettings,还可以指定ConnectionStrings和Resources,<%$ AppSettings:Text %>对应的Web.Config节点是:<appSettings><add key="Test" value="编程快乐" /></appSettings>

这里不需要用DataBind()方法。

3.ListBox控件的数据绑定

AppendDataBoundItems属性指示绑定的数据是否覆盖静态项,简单说,若此项为真,则代码中绑定的内容会添加到手动添加的项目的后面,否则就会覆盖它。

SelectionMode="Multiple"表示选择的类型为复选。

C# code:

//为控件指定数据源
ListBox.DataSource = DataSource;

//为控件的文本域指定数据源
ListBox.DataTextField="key";

//为控件的值域指定数据源
ListBox.DataValueField="classID";

//使用绑定方法
ListBox.DataBind();

4.小技巧

不显式指定控件,仅知道控件的类型,即使不知道控件的ID,也可以获取该控件所选择的值。方法如下:(在按钮事件中)

RadioButtonList rdl= sender as RadioButtonList;

if(rdl!=null)
{
    Response.Write(rdl.Items[rdl.SelectedIndex].Value);
}