数据绑定控件之绑定项

在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>&nbsp; &nbsp;<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泛型集合,那么它对应的就是集合类中的属性

多思考,多创新,才是正道!
原文地址:https://www.cnblogs.com/shuang121/p/1970428.html