0

我在隐藏的弹出窗口中有一个 asp:DropDownList 控件,当用户单击 Gridview 控件行上的图标(图像)时,将激活此弹出窗口。

然后我使用一些jquery来选择被点击的行,然后我提取gridview行上标签控件的值,然后想要填充弹出字段(文本框控件和下拉列表控件默认值),这个想法正在使用它们来更新数据库中行中的记录。

我遇到的问题是在弹出窗口的下拉控件中填充默认选择。我可以填充文本框中的文本框,而不是下拉列表。

这是其中一个文本框和来自 gridview 的 ddl 的标记,我从中获取我的值:

        <asp:TemplateField HeaderText="Current Stage"> 
    <ItemTemplate> 
        <asp:Label ID="lblCurrentStage" CssClass="clCurrentStage" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CurrentStage")%>' ToolTip ='<%# DataBinder.Eval(Container.DataItem, "CurrentStage")%>'></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Review Date"> 
    <ItemTemplate> 
        <asp:Label ID="lblReviewDate" CssClass="clReviewDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ReviewDate")%>' ToolTip ='<%# DataBinder.Eval(Container.DataItem, "ReviewDate")%>'></asp:Label>
    </ItemTemplate> 
</asp:TemplateField> 

这是在文本框上运行良好但在 ddl 上运行良好的代码:

        <div id="PopUpTrackerEditFieldCurrentStage">
    <div class="clEditFieldCurrentStageContainer">
    <asp:DropDownList ID="ddlPopUpEditCurrentStage" runat="server"> </asp:DropDownList>
    </div>
</div>
<div id="PopUpTrackerEditFieldReviewDate">
    <div class="clEditFieldReviewDateContainer">
    <asp:TextBox ID="tbPopUpEditReviewDate"  CssClass="clPopUpDateFieldsInEdit" runat="server" Text=""  ToolTip =""></asp:TextBox>
    </div>
</div>

这是用于填充文本框和下拉列表的 jquery:

//Store the current row being edited
var row = $(this).closest("tr");
//Get the existing Comments into a string
var strCurrentStage = $(".clCurrentStage", row).text();
//Add the any existing Comments
$("#<%=ddlPopUpEditCurrentStage.ClientID%>").val(strCurrentStage);
//Dynamically add the text to the tooltip 
$("#<%=ddlPopUpEditCurrentStage.ClientID%>").attr('title', 'Click to select the current stage here for ' + strPSTNNum);
//Get the existing Review Date into a string
var strReviewDate = $(".clReviewDate", row).text();
//Add the any existing Review Date
$("#<%=tbPopUpEditReviewDate.ClientID%>").val(strReviewDate);
//Dynamically add the text to the tooltip 
$("#<%=tbPopUpEditReviewDate.ClientID%>").attr('title', 'Edit the review date here for ' + strPSTNNum);

我知道 strCurrentStage 没问题,因为我临时使用它来填充文本框,以查看它是否包含来自 gridview 中当前阶段标签的当前阶段文本,并且确实如此。所以我认为的问题是我无法选择下拉列表控件的正确部分来填充默认值。

4

3 回答 3

0

为了其他人的利益,我最终设法对此进行排序的唯一方法是创建一个函数,该函数关闭并从数据库中获取选择,然后就在填充这些部分的部分下方,然后我将代码添加到该函数的底部就在它完成之前。我怀疑的原因是,当 OP 代码试图添加下拉列表并输入默认值时,DOM 已经看到了变化,我通过使用 jquery "Live('mousover',blaa) 确认了这一点包含 div 然后它就起作用了。无论如何,下面是代码:

function getListOfStages() {
    var ddlCurrentStages = $("#<%=ddlPopUpEditCurrentStage.ClientID%>");
    $.ajax({
        type: "POST",
        url: "PSTN_OrderManagementTracker.aspx/PopCurrentStagesddl",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var xmlDoc = $.parseXML(response.d);
            var xml = $(xmlDoc);
            var CurrentStagesReturned = xml.find("Table");
            //for each current stage from the database, add it to the dropdown list on the modal
            $.each(CurrentStagesReturned, function (index, CurrentStagesReturned) {
                dbCurrentStageName = $(this).find("CurrentStage").text()
                ddlCurrentStages.append('<option>' + dbCurrentStageName + '</option>');
                //Get the this records existing current stage into a string
                var strCurrentStage = $(".clCurrentStage", row).text();
                //Add the existing current stage for that record as the default one showing
                $("select#<%=ddlPopUpEditCurrentStage.ClientID%>").val(strCurrentStage);

            });
        },
        failure: function (msg) {
            alert(msg);
        }
    });
}
于 2013-05-21T10:25:10.743 回答
0

尝试不使用选定的选择器。就像您尝试将选定的值设置为选定的一样:

//Store the current row being edited
var row = $(this).closest("tr");            

//Get the existing Comments into a string from the label in the gridview
var strCurrentStage = $(".clCurrentStage", row).text();

//Add the current stage selected value to the ddl control
$("#<%=ddlPopUpCurrentStage.ClientID%>").val(strCurrentStage);
于 2013-05-17T11:10:34.433 回答
-1

$('#<%=ddlPopUpCurrentStage.ClientID %> option:selected').val(strCurrentStage)

于 2013-05-17T11:09:58.210 回答