自动完成用户控件的SelectedValue属性

时间:2011-09-24 08:39:32

标签: c# asp.net user-controls

首先,原谅我的英语,我的尝试,我正在创建一个自动完成的用户控件,替换下拉菜单,我已经创建了用户控件,并且它工作正常。现在为了简单起见,我需要在我的用户控件中提供一个公共属性来获取所选的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。

2 个答案:

答案 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()。 可能它可以帮助您找到隐藏字段的值