Свойство SelectedValue для пользовательского элемента управления автозаполнения - PullRequest
1 голос
/ 24 сентября 2011

Прежде всего, простите мой английский, моя попытка, я создаю пользовательский элемент управления автозаполнением, чтобы заменить выпадающие списки, я создал пользовательский элемент управления, и он работает нормально.Теперь для простоты мне нужно предоставить открытое свойство в моем пользовательском элементе управления, чтобы получить выбранный идентификатор, аналогично SelectedValue элемента управления DropDrown.Я застрял с этим, любые идеи будут оценены.


Привет Мой код

UserControl.ascx

<% @ Control Language = "C #"AutoEventWireup =" true "Код File =" UserControl.ascx.cs "Inherits =" UserControl "%> <% @ Register Assembly =" AjaxControlToolkit "Namespace =" AjaxControlToolkit "TagPrefix =" cc1 "%>

function DispValue (отправитель, e) {alert (e.get_value () + ": пользовательский элемент управления");document.getElementById (hiddenFieldName.Client ID) .value = e.get_value ();
}

UserControl.ascx.cs

открытый частичный класс UserControl:System.Web.UI.UserControl {
защищенный void page_load (отправитель объекта, 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 (отправитель объекта, 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 (отправитель объекта, EventArgs e) {foreach (элемент GridViewRow в gvPatient.Rows) {UserControl ptuc = (UserControl) item.FindControl( "pucPatient1");строка id = ptuc.SelectedValue;}}

public void Save (отправитель объекта, EventArgs e) {foreach (элемент GridViewRow в gvPatient.Rows) {if (item.RowType == DataControlRowType.DataRow) {UserControl ptuc = (UserControl) item.FindControl( "pucPatient1");string id = ptuc.SelectedValue; // получение нулевого значения.строка PatientName = ptuc.SelectedText;}}}

это все, что я сделал.

Благодарю вас, ура Шаранамма.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2011

Возможно, вы используете TextBox элемент управления в фоновом режиме для Autocomplete.Итак, определите SelectedValue следующим образом:

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

Или, если вам нужен идентификатор выбранного значения, а не отображаемый текст, поместите HiddenField рядом с TextBox и заполните идентификатор выбранногозначение из autocomlete с использованием JavaScript.И использовать его на стороне сервера:

public string SelectedValue
{
   get { return this.hiddenField.Text; }
}
0 голосов
/ 26 сентября 2011

вы можете использовать findcontrol () в событии RowDataBound gridview. Может быть, это поможет вам найти значения скрытого поля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...