【问题标题】:How to set the value of hiddenfield in listview using javascript or jquery如何使用javascript或jquery在listview中设置hiddenfield的值
【发布时间】:2014-12-14 09:58:40
【问题描述】:

我使用以下 javascript 通过 autocompleteextender 获取我的文本框的值。

<script type="text/javascript">
  function txt_lect_in_AutoCompleteExtender_itemSelected(sender, e)
    {
        var hdEmpId = $get('<%= hf_emp_num.ClientID %>');
        hdEmpId.value = e.get_value();
    }
</script>

但是当我将文本框放在列表视图中时,我无法再访问控件了。

<telerik:radlistview id="RadListView1" runat="server" itemplaceholderid="EmployeesContainer"
                            cssclass="formTable cr_center" groupitemcount="2">
                <LayoutTemplate>
                    <fieldset >
                        <legend> <asp:Label ID="lblTitle" runat="server" Font-Bold="True" Font-Size="16pt" Height="29px"
                    Font-Names="Times New Roman (Arabic)" ForeColor="#CC6634" Text=" المحاضرون الذين يقومون بتدريس دورة:"></asp:Label><asp:Label
                        ID="lbl_course_name" runat="server" Font-Size="16pt" Height="29px" Font-Names="Times New Roman (Arabic)"
                        ForeColor="#000" Text='<%#Session["course_name"]%>'></asp:Label><br /></legend>
                       <asp:Panel ID="DataGroupPlaceHolder2" runat="server">
                    </asp:Panel>
                    </fieldset>
                </LayoutTemplate>


                <ItemTemplate>
                    <fieldset style="float: right; width: 430px;">

                        <table cellpadding="0" cellspacing="0" class="cr_subtable">  
                        <tr>
                                <td>المحاضرة:
                                      <%#Eval("session")%>
                                </td>
                                <td>
                            <asp:TextBox ID="txt_lect_in" runat="server" AutoPostBack="True" Width="300px" 
                                        Text = '<%#Eval("name_id")%>' ontextchanged="txt_lect_in_TextChanged"></asp:TextBox>
    <asp:AutoCompleteExtender ID="txt_lect_in_AutoCompleteExtender" runat="server" DelimiterCharacters=""
        Enabled="True" MinimumPrefixLength="4" ServiceMethod="Get_Emp_AutoComplete" ServicePath="~/LectAbout.asmx"
        TargetControlID="txt_lect_in" BehaviorID="ACE_txt_lect_in" CompletionListCssClass="autocomplete_completionListElement"
        CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem" CompletionListItemCssClass="autocomplete_listItem"
        EnableCaching="False" 
        FirstRowSelected="true">
    </asp:AutoCompleteExtender>
                                 <asp:HiddenField ID="hf_emp_num" runat="server" Value ='<%#Eval("id")%>'></asp:HiddenField>
                                </td>
                            </tr>

                        </table>
                    </fieldset>
                </ItemTemplate>
                 <datagroups>
                    <telerik:ListViewDataGroup GroupField="lect_date_dis" DataGroupPlaceholderID="DataGroupPlaceHolder2"
                         SortOrder="Ascending">
                         <DataGroupTemplate>
                        <asp:Panel runat="server" ID="Panel3" CssClass="dataGroup" GroupingText= '<%# (DateTime.Parse((Container as RadListViewDataGroupItem).DataGroupKey.ToString())).Date.ToString("MM-dd-yyyy")%>'>
                        <asp:PlaceHolder ID="EmployeesContainer" runat="server"></asp:PlaceHolder>
                   </asp:Panel>
                      </DataGroupTemplate>
                            </telerik:ListViewDataGroup>
              </datagroups>

                <GroupSeparatorTemplate>
                    <div style="clear: both">
                    </div>
                    <hr/>
                </GroupSeparatorTemplate>
            </telerik:radlistview>

来自萤火虫:

<div id="ctl00_ContentPlaceHolder1_RadListView1_ctrl0_Panel3" class="dataGroup">
<div style="clear: both"> </div>
<hr>
<div id="ctl00_ContentPlaceHolder1_RadListView1_ctrl4_Panel3" class="dataGroup">
<fieldset>
<legend> 01-28-2011 </legend>
<fieldset style="float: right; width: 430px;">
<fieldset style="float: right; width: 430px;">
<table class="cr_subtable" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>المحاضرة: 4 </td>
<td>
<input id="ctl00_ContentPlaceHolder1_RadListView1_ctrl8_ctrl10_txt_lect_in" type="text" style="width:300px;" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$RadListView1$ctrl8$ctrl10$txt_lect_in\',\'\')', 0)" name="ctl00$ContentPlaceHolder1$RadListView1$ctrl8$ctrl10$txt_lect_in" autocomplete="off">
<input id="ctl00_ContentPlaceHolder1_RadListView1_ctrl8_ctrl10_hf_emp_num" type="hidden" name="ctl00$ContentPlaceHolder1$RadListView1$ctrl8$ctrl10$hf_emp_num">
</td>
</tr>
</tbody>

我想用我的文本框选定值的值设置隐藏字段。

【问题讨论】:

    标签: javascript jquery asp.net ajax telerik


    【解决方案1】:

    现在控件在列表视图中,您无法直接访问它。

    我要做的是创建一个公共变量 theID,然后在 listview.itemcreated 事件中,使用 findcontrol 查找控件,然后将公共变量的值设置为其 clientId,然后在您的页面中使用该公共变量.

    【讨论】:

      【解决方案2】:

      由于您有许多实例(每个数据行一个),因此将一些 CSS 类放在您的元素上并通过 jQuery 获取它们。 domElement.control 属性将为您提供 IScriptControl 参考

      【讨论】:

        【解决方案3】:

        1) 添加到您的文本框

        <asp:TextBox id = "txt_lect_in" onkeyup = "SetContextKey()"  ></asp:Textbox>
        

        2) 在 AutoCompleteExtender 内添加:

          UseContextKey = "true"
        

        3) jQuery

          function SetContextKey() {
        
                $find('<%=txt_lect_in_AutoCompleteExtender.ClientID%>').set_contextKey($get("<%=hf_emp_num.ClientID %>").value);
        
        
        4) In Webservice Method :
        
         public static List<string> Get_Emp_AutoComplete(string prefixText,int count, string contextKey)
        
         Hope it helps,if something else please ask.
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-07
          • 1970-01-01
          • 2023-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多