2011-09-24 42 views
1

首先,原谅我的英语,我的尝试,我创建一个自动完成用户控件,替换掉落,我创建了用户控件,并且它的工作正常。为了简单起见,我需要在我的用户控件中提供一个公共属性来获取选定的ID,类似于DropDrown控件的SelectedValue。我坚持这一点,任何想法将不胜感激。一个自动完成用户控件的SelectedValue属性


我的代码

UserControl.ascx

<%@控制语言= “C#” AutoEventWireup = “真” 的代码 文件=“UserControl.ascx。 cs“ Inherits =”UserControl“%> <%@ Register Assembly =”AjaxControlToolkit“Namespace =”AjaxControlToolkit“ 的TagPrefix = “CC1” %>

功能DispValue(发件人,E){ 警报(e.get_value()+ “:用户控制”); document.getElementById(hiddenFieldName.Client ID).value = e.get_value();
}

UserControl.ascx.cs

公共部分类用户控件:System.Web.UI.UserControl {
保护无效的Page_Load(对象发件人,EventArgs的) { ACEName。 ContextKey =“1”; }

public String SelectedValue 
{ 
    get { return this.hdnValue.Value; } 
} 

public String SelectedText 
{ 
    get { return this.Name.Text; } 
} } 

MyAspxPage.aspx

<%@注册SRC = “〜/ UserControl.ascx” 的TagPrefix = “PUC” 标签名= “用户控件” %>
患者姓名

MyAspxPage.cs数据表DT;如果(!IsPostBack) { dt = new DataTable();如果(!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。添加( “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; 
} 

保护无效GridPatient_DataBound(对象发件人,EventArgs的) { 的foreach(在gvPatient.Rows GridViewRow项) { 用户控件ptuc = (用户控件)item.FindControl( “pucPatient1”); string id = ptuc.SelectedValue; } }

公共无效保存(对象发件人,EventArgs的) { 的foreach(在gvPatient.Rows GridViewRow项) { 如果(item.RowType == DataControlRowType.DataRow) { 用户控件ptuc = (UserControl)item.FindControl(“pucPatient1”); string id = ptuc.SelectedValue; //获得空值。 string patientName = ptuc.SelectedText; } }}

这是所有我所做的。

感谢你,欢呼Sharanamma。

回答

1

可能您在使用​​3210后台的TextBox控件。因此,定义SelectedValue如下:

public string SelectedValue 
{ 
    get { return this.textBox.Text; } 
} 

或者,如果你需要选择的值的ID,不显示文本,然后将HiddenField靠近你TextBox和使用JavaScript从autocomlete填充选定值的ID。并使用它在服务器端:

public string SelectedValue 
{ 
    get { return this.hiddenField.Text; } 
} 
+0

我有一个问题更值I,E,如果我在用户控件事件暴露OnClientItemSelected在autoCompleteextender作为一个属性意味着我没有得到的SelectedValue的设置属性,因为以前我设置在UserControl的autocompleteextender的onClientItemSelect事件中隐藏的字段值,并在SelectedValue属性中显示此值,那么如何设置此属性?任何解决方案手段将不胜感激 –

0

你可以在gridview的RowDataBound事件中使用findcontrol()。 也许它可以帮助你找到隐藏字段

+0

感谢您的答复,雅做了同样的事情,但它不工作 –

+0

你可以把你的问题的代码?所以可以得到更好的主意.. –

+0

我张贴我的代码 –