我有一个客户主页面,我需要为客户选择位置。选择一个我们已经设置了一个弹出页面的位置,该页面有一个显示所有位置的网格。一旦用户将特定位置应该返回到主页面的位置图片显示。
Location对象包含feilds - LocId,LocName,LocState,LocCountry,PinCode。 整个位置对象应返回主页而不是单个值。
我的开场位置代码是
<asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="../Content/Images/search.png" Height="21px" ToolTip="Search Location" Width="21px"
OnClientClick="ShowLocation();" />
function ShowLocation() {
window.showModalDialog('../StandardLookups/Location.aspx', '_blank', 'dialogWidth:820px; dialogHeight:400px; dialogLeft:250px; dialogTop:250px;status:no; scroll:no; help:no; resizable:no,edge: Raised,doPostBackAfterCloseCallback: false,postBackElementId: null');
}
用户选择行后,弹出窗口中的代码
protected void btnSelect_Click(object sender, EventArgs e)
{
List<object> locationValues = gvLocationLookup.GetSelectedFieldValues(new string[] { "LocId", "LocName", "LocState","LocCountry","PinCode" });
var locationValue = (object[])locationValues[0];
var location= new Location
{
LocId = (int?)locationValue[0],
LocName = (string)locationValue[1],
LocState = (string)locationValue[2]
LocCountry = (string)locationValue[3]
PinCode = (string)locationValue[4]
};
Session["SELECTED_LOCATION"] = location;
Response.Write("<script> window.opener.location.reload(false); window.close();</" + "script>");
Response.End();
}
目前我使用会话值来移动值。有没有更好的方法?
答案 0 :(得分:0)
您可以在此查看适合您需求的方法。
http://msdn.microsoft.com/en-us/library/6c3yckfw%28v=vs.100%29.aspx
答案 1 :(得分:0)
之前我使用客户端代码(javascript,没有C#)创建了这样的系统。 要求是,当填写表格时,可以在弹出窗口中选择特定值(例如,位置)。 在弹出窗口中单击该值后,父页面将通过javascript接收此信息,弹出窗口将自行关闭。
请注意,父页面必须包含要填写的字段。在我的例子中,它是一个自动完成文本框(= FieldName)和一个链接的HiddenField(= FieldName_key),它保存文本框中文本的唯一键。
function confirmSelection(code, key)
{
try {
window.opener.document.getElementById('<%= FieldName %>').value = code;
window.opener.document.getElementById('<%= FieldName %>_key').value = key;
window.close();
}
catch (e) {window.close();}
}
此客户端脚本(与C#脚本相对)的另一个好处是您不必重新加载父页面,这可能会影响用户的工作。