0

ユーザーがDropdownlistsselectedIndexchangeイベントを変更したときに、Gridviewのテキストボックスをtrueまたはfalseで表示します。次のコードを実行しました。

私の.CSファイルコードは次のとおりです。

protected void gvTaskList_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        try
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                HiddenField hdn = (HiddenField)e.Row.FindControl("hdnStatus");
                DropDownList ddl = (DropDownList)e.Row.FindControl("ddlStatus");
                TextBox txt = (TextBox)e.Row.FindControl("txtVal");
                if (ddl != null)
                {
                    ddl.Items.Add("Not Started");
                    ddl.Items.Add("In Progress");
                    ddl.Items.Add("Complete");

                    if (hdn != null)
                    {
                        ddl.SelectedValue = hdn.Value;
                    }
                    //ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
                    ddl.Attributes.Add("onChange", "return myFun(" + "'" + txt.ClientID + "'" +");");
                }
            }
        }
        catch (Exception ex)
        {
            Utility.ErrorList("EmpTaskList--RowdataBound", ex.ToString());
        }
    }

注:私のコンボボックスとテキストボックスは両方ともEditTmplateにあります

Javascriptコードは以下の通りです

<script type="text/javascript">
function myFun(txtControl) {

    var v = document.getElementById("<%=" + txtControl + "%>");
    alert(v);
}

ドロップダウンリストのインデックス関数を変更すると、アラートが呼び出され、アラートがnullを表示します。

だから誰かが私に何が間違っているのか提案してもらえますか?

4

1 に答える 1

0

getElementById呼び出しにサーバー側のタグが必要だとは思わない:

var v = document.getElementById(txtControl);
于 2012-06-26T12:23:45.327 に答える