我在隐藏弹出窗口中有一个asp:DropDownList控件,当用户点击Gridview控件的一行上的图标(图像)时,会激活此弹出窗口。
然后我使用一些jquery来选择已被点击的行,然后我在gridview行上提取标签控件的值,然后想要填充弹出域(文本框控件和DropDown列表控件的默认值) ,想法是使用它们来更新数据库中行的记录。
我遇到的问题是在弹出窗口的下拉控件中填充默认选择。我可以填充文本框中的文本框,而不是下拉列表。
以下是其中一个文本框的标记和来自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中当前阶段标签的当前阶段文本而且确实如此。所以我认为问题是我无法选择下拉列表控件的正确部分来填充默认值。
答案 0 :(得分: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);
答案 1 :(得分: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);
}
});
}
答案 2 :(得分:-1)
$('#&lt;%= ddlPopUpCurrentStage.ClientID%&gt;选项:选中')。val(strCurrentStage)