首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 使用数据绑定的页面传参问题 [已结贴,结贴人:Squall_163]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-26 16:43:46 楼主
    在GridView控件中,我添加了一个模板列,里面有一个Button控件,我想在这个控件的OnClientClick事件中调用已经写好的JavaScript函数WinOpen(url)弹出一个新窗口。

    我写的代码是:OnClientClick='WinOpen("DelegateConfirm.aspx?id= <%# Eval("ID")%>");',winopen里的url我老是写的不对,希望高手指教!
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-26 16:47:141楼 得分:0
    能把WinOpen()函数帖上来吗?
    可能是这里出问题了!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-26 17:13:192楼 得分:0
    WinOpen函数不会出错的,是 <%# Eval("")>写的不对,单引号和双引号我不知道在这种情况下怎么搭配?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    发表于:2008-05-26 17:19:373楼 得分:20
    引用 2 楼 Squall_163 的回复:
    WinOpen函数不会出错的,是 <%# Eval("")>写的不对,单引号和双引号我不知道在这种情况下怎么搭配?


    Eval内部必须是双引号,因为它是普通的c#方法。

    Eval可以使用第二个参数格式化,因此例如你就可以写:
        <%# Eval("ID","~/DelegateConfirm.aspx?id={0}") %>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-26 17:20:514楼 得分:0
    比如说用 <a href="#" onclick='WinOpen("DelegateConfirm.aspx?id= <%# Eval("ID") %>",100,100,-1);'>确认 </a>
    就正确无误了,但是项目要求这个链接要根据具体情况决定是否显示,但href标签不支持Visible属性。。。

    后来我用ASP的button控件,就有我的这个提问。OnClientClick事件我写不对。

    还是请大家帮忙指教下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    发表于:2008-05-26 17:21:025楼 得分:0
    第二个参数的格式,你可以参考语法:string.Format(fmt,obj,.....)的写法。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-26 17:26:166楼 得分:0
    太谢谢3楼了,按你给方法已经搞定了!再次谢谢!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    发表于:2008-05-26 17:26:537楼 得分:0
    引用 4 楼 Squall_163 的回复:
    比如说用 <a href="#" onclick='WinOpen("DelegateConfirm.aspx?id= <%# Eval("ID") %>",100,100,-1);'>确认 </a>
    就正确无误了,但是项目要求这个链接要根据具体情况决定是否显示,但href标签不支持Visible属性。。。

    后来我用ASP的button控件,就有我的这个提问。OnClientClick事件我写不对。

    还是请大家帮忙指教下


    这是一个例子:

    HTML code
    <asp:Label ID="Label1" runat="server" Text='<%# Eval("用户名","[{0}]") %>' ForeColor='<%# this.NameColor((string)Eval("分类")) %>' />


    这里绑定了“用户名、分类”两个字段。

      protected System.Drawing.Color NameColor(string name)
      {
          if (name == "特别关注")
              return System.Drawing.Color.Red;
          else
              return System.Drawing.Color.DarkBlue;
      }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    发表于:2008-05-26 17:35:418楼 得分:0
    解释一下上面,故意对“用户名”在显示时重新格式化,增加了中括号。然后又自动绑定ForColor属性,注意此时要返回强类型而不是string。

    绑定Visible属性也是一样,创建一个bool型数据转换方法供界面设计时调用即可。


    数据绑定是一种界面设计的“大法”。

    这样的编码又简洁、又快速,因为用不着嵌入手动写的执行DataBind代码的那些事件方法中,就免去手写过多代码,你可以腾出精力做出很酷的界面。使用过多的asp.net1,1风格的代码去FindControl然后去改变其属性是比较累赘的,相对来说维护困难,你就没有精力和信心去增加很多很酷的界面自动化调整了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zengxie
    • 等级:
    发表于:2008-05-27 07:16:539楼 得分:0
    收藏
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-27 07:53:0510楼 得分:0
    收藏
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-27 08:38:4811楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-27 08:43:5812楼 得分:0
    虽然经常用,但是没用得这么细。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-27 08:53:3813楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-27 09:14:2614楼 得分:0
    还是不大理解.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-29 17:35:3515楼 得分:0
    看看。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 17:59:3016楼 得分:0
    很有用啊,学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 20:47:0917楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-04 09:29:3118楼 得分:0
    学习了,呵呵
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • szjtyy
    • 等级:
    发表于:2008-06-04 09:58:4819楼 得分:0
    该回复于2008-06-04 12:53:31被版主删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-04 10:19:1520楼 得分:0
    OnClientClick='WinOpen("DelegateConfirm.aspx?id= <%# Eval("ID")%>");' 转换>>

    OnClientClick="WinOpen('DelegateConfirm.aspx?id= <%# Eval("ID")%>');"
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-04 12:49:0621楼 得分:0
    给你一个例子看看:
    <Columns>
        <asp:TemplateColumn HeaderText="NO">
            <ItemTemplate>
                <asp:Label ID="txtIndex" runat="server" Text=' <%# ++index.Index %>'> </asp:Label>
            </ItemTemplate>
        </asp:TemplateColumn>
        <asp:BoundColumn HeaderText="URace ID" DataField="URaceID"> </asp:BoundColumn>
        <asp:BoundColumn HeaderText="Bet Job ID" DataField="LVBetJobID"> </asp:BoundColumn>
        <asp:BoundColumn HeaderText="Master ID" DataField="DistributionID"> </asp:BoundColumn>
        <asp:BoundColumn HeaderText="Batch ID" DataField="BatchID" Visible="False"> </asp:BoundColumn>
        <asp:BoundColumn HeaderText="Bet Item ID" DataField="BetItemID"> </asp:BoundColumn>
        <asp:BoundColumn HeaderText="Pool Type" DataField="PoolTypeName"> </asp:BoundColumn>
        <asp:BoundColumn HeaderText="Combination" DataField="Combination"> </asp:BoundColumn>
        <asp:TemplateColumn HeaderText="Status">
            <ItemTemplate>
                <%-- <asp:Label ID="lblStatusText" style="text-justify:auto; visibility:hidden;" CssClass="textbox" runat="server" Text=' <%# DataBinder.Eval(Container.DataItem, "StatusText", "{0}") %>' ToolTip=' <%# DataBinder.Eval(Container.DataItem, "StatusText", "{0}") %>'> </asp:Label>--%>
                <Common:RadioButton style="cursor:hand; visibility:visible;width:0px;" Enabled="true" ID="radioPending" runat="server" Text="Pending" ToolTip="The data will not be updated when status is pending." GroupName=' <%# DataBinder.Eval(Container.DataItem, "BetItemID", "{0}") %>'  Checked=' <%# DataBinder.Eval(Container.DataItem, "Status", "{0}").ToString() == "2" %>'  OldValue=' <%# DataBinder.Eval(Container.DataItem, "Status", "{0}") %>' />
                <Common:RadioButton style="cursor:hand;" ID="radioSuccess" runat="server" Text="Success" ToolTip="update Status to Success" GroupName=' <%# DataBinder.Eval(Container.DataItem, "BetItemID", "{0}") %>'  Checked=' <%# DataBinder.Eval(Container.DataItem, "Status", "{0}").ToString() == "4" %>'/>
                <Common:RadioButton style="cursor:hand;" ID="radioFailure" runat="server" Text="Failure" ToolTip="update Status to Failure" GroupName=' <%# DataBinder.Eval(Container.DataItem, "BetItemID", "{0}") %>'  Checked=' <%# DataBinder.Eval(Container.DataItem, "Status", "{0}").ToString() == "5" %>'/>
            </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="Description">
            <ItemTemplate>
                <asp:TextBox ID="txtRemark" CssClass="textbox" runat="server" Text=' <%# DataBinder.Eval(Container.DataItem, "Remark", "{0}") %>' > </asp:TextBox>
            </ItemTemplate>
        </asp:TemplateColumn>
        <asp:BoundColumn HeaderText="RequestID" DataField="" Visible="False"> </asp:BoundColumn>
    </Columns>

    注意:单引号与双引号的使用。方法DataBinder.Eval()内只能用双引号(C#语法规则),则在HTML中就Property=Value时,value两测就要使用单引号。

    另一例:

    <asp:TemplateColumn HeaderText="Bet Job ID" ItemStyle-Width="120px">
    <ItemTemplate>
    <asp:Label ID="txtBetJobID" runat="server" Text=' <%# DataBinder.Eval(Container.DataItem, "LVBetJobID", "{0}") %>' ForeColor=' <%# bool.Parse(DataBinder.Eval(Container.DataItem, "ExistedRow", "{0}"))?(System.Drawing.Color.Empty):(System.Drawing.Color.Red) %>'> </asp:Label>
    </ItemTemplate>
    </asp:TemplateColumn>

    使用了?:三目运算符。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-04 12:58:2222楼 得分:0
    不错,不错!学习了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-04 15:32:0323楼 得分:0
    MARK
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-05 13:13:4124楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • nnlxylm
    • 等级:
    发表于:2008-06-06 10:03:0625楼 得分:0
    该回复于2008-06-10 09:13:37被版主删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-07 11:00:0026楼 得分:0
    细 细 细
    学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liuqian4243
    • 等级:
    发表于:2008-06-08 20:50:1827楼 得分:0
    收藏了.
    很值得学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-08 23:42:3828楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-09 10:31:4229楼 得分:0
    Mark!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-02 14:23:0230楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-07 16:10:4631楼 得分:0
    mark
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved