Как мы можем обработать событие onselectedindexoted выпадающего списка в gridview / datalist? - PullRequest
1 голос
/ 23 февраля 2012

У меня есть простой список данных с выпадающим списком и текстовым полем.

Когда выбранный в выпадающем списке индекс изменяется, я хочу загрузить значение в текстовое поле в этом элементе списка (то есть в текстовое поле в этой конкретной строке).

<ItemTemplate>
  <asp:DropDownList runat="server" 
    ID="ddlCategory" AutoPostBack="true"
    DataTextField="category"
    DataValueField="category_code" 
    OnSelectedIndexChanged="ddlCategory_SelectedIndexChanged" />                      
    <br />
    Code<asp:TextBox 
      runat="server" 
      ID="txtOutputCode" 
      Text='<%# Bind("output_code") %>' />
</ItemTemplate>

Как мне это сделать?

Проблема, с которой я сталкиваюсь, заключается в том, чтобы найти соответствующее текстовое поле для обновления.

например. для кнопки я передам имя команды и аргументы команды. И затем я обработал бы событие в сетке или в списке данных, чтобы найти соответствующее текстовое поле и обновить текст. Что мы можем сделать в случае изменения выбранного индекса в раскрывающемся списке?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 23 февраля 2012

Я думаю, это должно работать. Попробуйте это ...

protected void ddlCategory_SelectedIndexChanged(object sender, EventArgs e)
{
   var ddlList= (DropDownList)sender;
   var row = (GridViewRow)ddlList.NamingContainer;
   //get the Id of the row
   var Id = Convert.ToInt32(((Label)row.FindControl("IdColumn")).Text);
}
1 голос
/ 23 февраля 2012

Что вы должны сделать, это следующее:

private SomeObject o = new SomeObject();

private void o_SomeEvent(...) {
}

public TheConstructor() {
    this.o.SomeEvent += new SomeHandler(o_SomeEvent);
}

, что означает, что вам нужно создать новый выпадающий список и прикрепить его событие к выпадающему списку, который вы имеете в представлении сетки на itemdatabound

0 голосов
/ 23 мая 2019
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        DropDownList ddlcouse = (DropDownList)sender;
        DataListItem Grow = (DataListItem)ddlcouse.NamingContainer;
        foreach (DataListItem dst in dstAllSite.Items)
        {
            DropDownList ddl_AccountInfo = (DropDownList)dst.FindControl("ddlAccountInfo");
            if (ddlcouse.SelectedIndex > 0)
            {
                BindAccountDDL(ddl_AccountInfo, ddlcouse.SelectedValue.Trim());
                ddlcouse.Focus();
            }
        }
    }

    private void BindAccountDDL(DropDownList ddlAccountInfo, string ddlcouse)
    {
        csPL.ddlcouse = ddlcouse;
        DataTable dt = csBL.BindAccountInfoDDL(csPL);
        if (dt.Rows.Count > 0)
        {
            ddlAccountInfo.DataSource = dt;
            ddlAccountInfo.DataTextField = "BankName";
            ddlAccountInfo.DataValueField = "BankId";
            ddlAccountInfo.DataBind();
            ddlAccountInfo.Items.Insert(0, "Select");
        }
    }
...