日期:2014-05-18  浏览次数:20484 次

asp CommandArgument='<%# Eval("UserID") %>' UserID为单引号时报错
<asp:GridView Width="715px" BorderWidth="0" ID="gvManage" runat="server" AutoGenerateColumns="False"
  ShowHeader="False" OnRowCommand="GvManage_RowCommand" 
  DataKeyNames="UserID" OnRowDataBound="GvManage_RowDataBound" 
  TabIndex="11" >
  <Columns>
  <asp:TemplateField HeaderText="変更">
  <ItemTemplate>
  <asp:ImageButton ID="btnUpd" runat="server" ImageUrl="../Resource/Image/NewImage/btn_Update_d.gif" AlternateText="変更"
  CommandArgument='<%# Eval("UserID") %>' onmouseover="smartMouserOver(this);" onmouseout="smartMouserOut(this);" CommandName="Upd" />  
  </ItemTemplate>
  <ItemStyle CssClass="TitleLeftTD" Width="47px"/>
  </asp:TemplateField>
UserID为单引号时在IE9中不会报错,但是在IE6中显示时会报错。如何修改啊各位大侠

------解决方案--------------------
CommandArgument='<%# Eval("UserID") %>'
是单引号的话就代表'<%# Eval('这是一个字符串
') %>'这是另外一个字符串 中间还有一个UserID不知道是什么类型
故而报错!
------解决方案--------------------
要不你试试。。。转译字符吧 。。。。。。。


------解决方案--------------------
CommandArgument='<%# Eval("UserID").ToString().Replace("'","&apos;") %>'
------解决方案--------------------
CommandArgument='<%#Bind("UserID") %>' 这样应该就没有问题了
------解决方案--------------------
<%# GetUrl(Eval("UserID").ToString(),"3")
改成

<%=GetUrl(Eval("UserID").ToString(),"3")
后台写的方法要用<%=%>而不是#
------解决方案--------------------
Text='<%# GetUrl(Convert.ToString(Eval("UserID")),"3")%>'>

 GetUrl方法你确定有返回值吗
------解决方案--------------------
OnClientClick='<%# GetUrl(Eval("UserID").ToString(),"3") %>'

OnClientClick这个是要写JS脚本,不能调用后台方法
------解决方案--------------------
GetUrl的代码是怎么写的啊
------解决方案--------------------
Eval绑定应该没有问题,你应该是在后台代码取值的时候出现了问题,因为Eval取得的数据类型是Object,所以你在取值的时候,当UserID是Int类型时你应该这么取:int id=int.Parse(e.CommandArgument.ToString())
------解决方案--------------------
CommandArgument='<%#Bind("UserID") %>'