在Asp.net页面我们会使用html控件,web控件,同样在数据绑定控件中,我们也可以这样使用,使用web控件的目的是为了在后台触发事件或者在后台使用,html控件就是没必要再后台触发事件或者使用的,这个是很好选择,可以根据自己的需要选择控件
使用html控件我们可以直接在上面触发js事件或者相关的布局,web控件可以直接通过rowCommand或者其他方式在后台触发事件,或者在后台直接使用,如果想触发js的事件可以使用onclientClick,如果没有onClientClick,可以触发数据源绑定控件的DataBound事件,通过arribute.add来实现
总之,可根据需要选择适合的控件就可以了,现在来看一下在绑定的时候需要注意的几点
1、 无论是html控件还是web空间都可以<%#eval_r("MessageNo") %>绑定控件
能使用html控件或者标签最好使用html控件,比如超链接,hyperlink,我们可以使用<a href=””></a> <a href="Reply.aspx?no=<%# eval_r("MessageNo") %>">回复咨询</a>
2、 等
3、 绑定的时候如果有需要判断,假如从数据库里读取数据,如果有,则在页面显示出来,否则就不现实,我们可以在后台写一个方法判断一下,然后再前台调用就可以了,如
<img id="img1" value='<%# GetImg(eval_r("MessageNo").Tostring()) %>' />
后台:
Public string GetImg(string img)
{
If(img!=””)
{
Return img;
}
Return “暂无栏目图片”;
}
或者我们也可以直接使用条件表达式
<%# eval_r("ClassImage").ToString()==""?"暂无栏目图片":eval_r("ClassImage") %>
4、 我们知道事件的发生都是通过委托完成的,平常我们双击就可以直接获得了一个书写事件的方法,就像我们触发RowCommand事件一样,通过commandName来判断点击的是哪个按钮,这个我们都知道,但是大家有没有想过,如果该控件,比如说按钮不在行内,而在头部,那么在触发RowCommand好像就不行了,所以我们可以先在后台书写方法的格式写一个方法,然后再页面中我们触发一个事件,比如onclick事件,然后调用刚写的的方法,这样的也可以的,就是因为数据绑定控件无法双击按钮触发事件,所以使用了rowcommand,现在我们知道了也可以不用使用它了,看一个例子:
<td height="20">
<img src="../images/edt.gif" width="16" height="16" />
<a href="Reply.aspx?no=<%# eval_r("MessageNo") %>">回复咨询</a> <img src="../images/del.gif"
width="16" height="16" /><asp:LinkButton ID="linkDelete" runat="server" CommandArgument='<%# eval_r("MessageNo") %>'
OnClick="linkDelete_Click" OnClientClick="return confirm('你确定要删除此条留言信息吗??')">删除</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
后台:
protected void linkDelete_Click(object sender, EventArgs e)
{
LinkButton linkDelete = (LinkButton)sender;
if (linkDelete != null)
{
int Messageno = Convert.ToInt32(linkDelete.CommandArgument);
BLL.Message.Delete(Messageno);
this.M_RepeatertBind((string)ViewState[vsKey]);
}
}
5、绑定的时候要注意格式'<%#eval_r("MessageNo") %>',如果我们绑定的是DataSet,那么引号内字符串对应的就是表中字段,如果绑定的是Ilsit泛型集合,那么它对应的就是集合类中的属性