C# 中继器里有什么

C# 中继器里有什么,c#,asp.net,C#,Asp.net,一个问题出现在我正在使用臭名昭著的转发器的页面的特定区域。控件绑定到一个有效的数据源,该数据源在视图状态中保持不变 中继器代码如下所示: <asp:Repeater ID="creditRightItems" runat="server" DataSourceID="sdsOrder"> <HeaderTemplate> <thead> <td>Qty Returning:</td&

一个问题出现在我正在使用臭名昭著的转发器的页面的特定区域。控件绑定到一个有效的数据源,该数据源在视图状态中保持不变

中继器代码如下所示:

<asp:Repeater ID="creditRightItems" runat="server" DataSourceID="sdsOrder">
     <HeaderTemplate>
          <thead>
               <td>Qty Returning:</td>
               <td>Price:</td>
          </thead>
     </HeaderTemplate>
          <ItemTemplate>
               <tr>
                    <td><asp:TextBox ID="txtQuantity" runat="server" PlaceHolder="0" CssClass="txtQuantity Credit-Check" data-item='<%# Eval("ProductNum") %>' /><span class="creditX">X</span></td>
                    <td><span id="ProductPrice" class='Credit-Container price<%# Eval("ProductNum") %>'><%# ConvertToMoney(Eval("Price").ToString()) %></span> 
                         <input type="hidden" id="hfPrice" value="<%# Eval("Price") %>" />
                         <input type="hidden" id="hfProdNum" value="<%# Eval("ProductNum") %>" />
                         <input type="hidden" id="hfSKU" value="<%# Eval("SKU") %>" />
                    </td>
               </tr>
          </ItemTemplate>
</asp:Repeater>
问题是,如何获取的有效值:

  • ProductPrice
    hfPrice
  • hfProdNum
  • hfSku
就我个人而言,我无法让他们返回有效内容。我试过:

HiddenField productPrice = (HiddenField).item.FindControl("hfPrice");
string price = productPrice.Value;

HtmlInputHidden productPrice = (HtmlInputHidden).item.FindControl("hfPrice");
string price = productPrice.Value;
我知道
FindControl
需要
runat
,所以我试图在添加
runat
时实现一种避免
中继器中断的方法,或者获取那些
输入的内容的方法


任何想法和帮助都会很棒。

源代码中的内容不是服务器控件,因此FindControl找不到它们

为什么不能将隐藏字段转换为asp:HiddenField标记

<asp:HiddenField id='hfPrice' value='<%# Eval("Price") %>' runat='server' />


runat可能没有破坏你的页面;我想是你评估电话的单引号对双引号。如果您像我在本示例中所做的那样替换它们,它将起作用。

源代码中的不是服务器控件,因此FindControl将找不到它们

为什么不能将隐藏字段转换为asp:HiddenField标记

<asp:HiddenField id='hfPrice' value='<%# Eval("Price") %>' runat='server' />


runat可能没有破坏你的页面;我想是你评估电话的单引号对双引号。如果你像我在这个示例中那样替换它们,它会起作用。

嗯,不知道你的代码到底在哪里,我猜你应该考虑在好事件上做这个操作。< /P> 尝试处理
ItemDataBound
事件。不要对每行进行trought迭代,而是执行以下操作:

(VB.net代码,对不起)


嗯,不知道你的代码在哪里,我猜你应该考虑在好事件上做这个操作。< /P> 尝试处理

ItemDataBound
事件。不要对每行进行trought迭代,而是执行以下操作:

(VB.net代码,对不起)


因此,罪魁祸首是由于报价和单报价,错误存在于:

value="<%# Eval("Price") %>"
value=“”
如果执行以下操作,则该错误不再发生:

value='<%# Eval("Price") %>'
value=''

这减轻了分页符中的错误,允许我正确运行
FindControl
。我犯了一个粗心的错误,但希望这对将来的人有所帮助。

因此,罪魁祸首是由于引用和单引用,错误存在于:

value="<%# Eval("Price") %>"
value=“”
如果执行以下操作,则该错误不再发生:

value='<%# Eval("Price") %>'
value=''

这减轻了分页符中的错误,允许我正确运行
FindControl
。我犯了一个粗心的错误,但希望这对将来的人有所帮助。

查看之前的帖子。。而且看起来很奇怪,你的。。。。不是在a中,我会亲自替换它们并将它们包装在a中,因为div本质上与a
面板
相同,您是否尝试过在标记中直接使用ASP控件而不是HTML元素?这可能会解决您的问题。。。至少我想是这样。其他化。。。当我每天都做这种操作时,我真的很抱歉…@SimonDugré这是一件奇怪的事情,如果我使用例如
asp:Literal
它实际上会出错,并且不会加载页面。输入类型隐藏和span是。见@Tim的答案。@SimonDugré
GEThttp://localhost:54096/IssueCredit.aspx?oid=176232&_=1413486838849 500(内部服务器错误)
只要我删除
asp:HiddenField
Literal
,或
标签
就可以了。。而且看起来很奇怪,你的。。。。不是在a中,我会亲自替换它们并将它们包装在a中,因为div本质上与a
面板
相同,您是否尝试过在标记中直接使用ASP控件而不是HTML元素?这可能会解决您的问题。。。至少我想是这样。其他化。。。当我每天都做这种操作时,我真的很抱歉…@SimonDugré这是一件奇怪的事情,如果我使用例如
asp:Literal
它实际上会出错,并且不会加载页面。输入类型隐藏和span是。见@Tim的答案。@SimonDugré
GEThttp://localhost:54096/IssueCredit.aspx?oid=176232&_=1413486838849 500(内部服务器错误)
只要我删除
asp:HiddenField
Literal
,或
标签
就可以了。正如我提到的Tim,当我这样做时,它会断开中继器。这不允许加载页面。您确定这不是调用eval时的引号吗?我见过打破它-如果你使用所有双引号或单引号,它将打破。但是,如果您在内部使用single,在外部使用double(反之亦然),它应该可以工作。您唯一的选择是使用Javascript,但您需要找到一种方法为它们生成唯一ID。@Tim您应该修改您的答案,
runat
的整个问题都是因为引号。正如我提到的Tim,当我这样做时,它会断开中继器。这不允许加载页面。您确定这不是调用eval时的引号吗?我见过打破它-如果你使用所有双引号或单引号,它将打破。但是,如果您在内部使用single,在外部使用double(反之亦然),它应该可以工作。您唯一的其他选择是使用Javascript,但您需要找到一种方法为它们生成唯一ID。@Tim您应该修改您的答案,
runat
的整个问题都是因为引号。