首先,原谅我的英语,我的尝试,我正在创建一个自动完成的用户控件,替换下拉菜单,我已经创建了用户控件,并且它工作正常。现在为了简单起见,我需要在我的用户控件中提供一个公共属性来获取所选的id,类似于DropDrown控件的SelectedValue。我坚持这一点,任何想法将不胜感激。
您好我的代码
UserControl.ascx
<%@ Control Language =“C#”AutoEventWireup =“true”代码 文件= “UserControl.ascx.cs” Inherits =“UserControl”%> <%@注册 Assembly =“AjaxControlToolkit”Namespace =“AjaxControlToolkit” TagPrefix =“cc1”%>
function DispValue(sender,e){ alert(e.get_value()+“:user control”); document.getElementById(hiddenFieldName.Client ID).value = e.get_value();
}UserControl.ascx.cs
public partial class UserControl:System.Web.UI.UserControl {
protected void page_load(object sender,EventArgs e) { ACEName.ContextKey =“1”; }public String SelectedValue { get { return this.hdnValue.Value; } } public String SelectedText { get { return this.Name.Text; } } }
MyAspxPage.aspx
<%@ Register Src =“〜/ UserControl.ascx”TagPrefix =“puc” TagName =“UserControl”%>
患者姓名MyAspxPage.cs DataTable dt; protected void Page_Load(object sender,EventArgs e) { if(!IsPostBack) { dt = new DataTable(); dt.Columns.Add( “COL1”); dt.Columns.Add( “COL2”); dt.Columns.Add( “COL3”); dt.Columns.Add( “COL4”); dt.Columns.Add( “COL5”); dt.Columns.Add( “COL6”);
if (Session["dt"] == null) { dt = AddRow(dt); gvPatient.DataSource = dt; gvPatient.DataBind(); Session["dt"] = dt; //ViewState["dt"] = dt; } else dt = (DataTable)Session["dt"];//ViewState["dt"]; } } private DataTable AddRow(DataTable dt) { for (int i = 0; i < 5; i++) { DataRow dr = dt.NewRow(); dr[0] = ""; dr[1] = ""; dr[2] = ""; dr[3] = ""; dr[4] = ""; dr[5] = ""; dt.Rows.Add(dr); } return dt; }
protected void GridPatient_DataBound(object sender,EventArgs e) { foreach(gvPatient.Rows中的GridViewRow项) { UserControl ptuc = (用户控件)item.FindControl( “pucPatient1”); string id = ptuc.SelectedValue; } }
public void Save(object sender,EventArgs e) { foreach(gvPatient.Rows中的GridViewRow项) { if(item.RowType == DataControlRowType.DataRow) { UserControl ptuc = (用户控件)item.FindControl( “pucPatient1”); string id = ptuc.SelectedValue; //获取空值。 string patientName = ptuc.SelectedText; } }}
这就是我所做的一切。
感谢你,欢呼Sharanamma。
答案 0 :(得分:2)
您可能在TextBox
的后台使用Autocomplete
控件。因此,请将SelectedValue
定义如下:
public string SelectedValue
{
get { return this.textBox.Text; }
}
或者如果您需要所选值的ID而不是显示文本,请将HiddenField
放在TextBox
附近,并使用JavaScript从autocomlete填充所选值的ID。并在服务器端使用它:
public string SelectedValue
{
get { return this.hiddenField.Text; }
}
答案 1 :(得分:0)
你可以在gridview的RowDataBound事件中使用findcontrol()。 可能它可以帮助您找到隐藏字段的值