2011-09-24 52 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

我張貼我的代碼 –