从jquery模式弹出窗口中获取文本框值,其中包含转发器控件

时间:2014-08-01 08:13:50

标签: javascript jquery asp.net vb.net

我有一个非常奇怪的问题,我只是不明白。我有一个asp.net转发器控件,它内置于jquery模式中。

控件的代码在这里。

<div id="dialog" style="display:none">
<asp:Repeater id="myrepeater" runat="server" >
    <HeaderTemplate></HeaderTemplate>
    <ItemTemplate>
        <asp:TextBox ID="txtAnswer" TextMode="MultiLine" Columns="50" Rows="4" runat="server" />

    </ItemTemplate>
    <FooterTemplate></FooterTemplate>
</asp:Repeater>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" style = "display:none" OnClick="Submit1" OnClientClick="return ValidateInput()" />

然后我从asp.net vb.net代码隐藏方法调用jquery / javascript PopupCenter。

function PopupCenter() {
    $(function () {
        $("#dialog").dialog({
            title: "Questions and answers",
            width: 1200,
            height: 750,
            buttons: {
                Ok: function () {
                    $("[id*=Button1]").click();
                },
                Close: function () {
                    $(this).dialog('close');
                }
            }
        });
    });
}

一切都运作良好。模态出现在文本框中。我已将我的asp.net按钮绑定到名为Submit1的回发事件。在成功触发后面的代码中,然后执行此操作...

Protected Sub Submit1(ByVal sender As Object, ByVal e As System.EventArgs)
 For i = 0 To myrepeater.Items.Count - 1
    Dim dynTxtAnswer As TextBox =    DirectCast(qtaRepeater.Items(i).FindControl("txtAnswer"), TextBox)           
Next
End Sub

所以在上面的for循环中,我期待的是转发器中文本框的Text值。我可以访问文本框。只是它声明一个空字符串而不是字符串值。所以总体上完全难倒。我想知道是否有人知道为什么会这样。

谢谢。

3 个答案:

答案 0 :(得分:0)

尝试下面的代码

在OK模态对话框中添加代码

Ok: function () 
{
   __doPostBack("<%= Button1.UniqueID %>", "");
}

答案 1 :(得分:0)

请尝试以下代码:

Dim textString as String = "Null"  

Dim txtBoxValue As TextBox    

Dim i As Integer = 0   

For Each item In myrepeater.Items 

   txtBoxValue = item.FindControl("txtAnswer")  

   If Not IsNothing(txtBoxValue) Then    

     i += 1  

     textString = txtBoxValue.Text 

   Else        
   End If    
Next

让我知道它是否适合你。

答案 2 :(得分:0)

我无法解决问题所以我设法解决了问题。

我创建了一个隐藏的asp.net字段

 <input id="Hidden1" type="hidden" runat="server" />

然后我使用Jquery拾取了转发器文本框,并将值捆绑到一个javascript数组中,并使用|像这样...

  var cntrlAnswer = $('.cssAnswer')
  for (var i = 0; i < cntrlAnswer.length; i++) {
            repeaterTxtVals[i] = cntrlAnswer[i].value}

  document.getElementById('<%= Hidden1.ClientID %>').value = repeaterTxtVals.join('|');   

然后在代码隐藏事件处理程序中,我把它拿起并用它做了一些事情。

  Dim strAnswers As String() = Hidden1.Value.Split("|".ToCharArray())

感谢我给予的任何提示,他们帮助了很多。