Pragya Nagwanshi Ответов: 2

Как получить доступ к идентификатору динамического элемента управления в javascript


Привет,
Я не создаю никаких кнопок динамически в C#.Я хочу выполнить наведение курсора мыши на динамическую кнопку.моя функция выполняется, но я не получаю идентификатор кнопки, чтобы я мог выполнить некоторые стили на этой кнопке, я получаю идентификатор кнопки null.Что же мне делать?

Что я уже пробовал:

bt = new Button();
                       bt.ID = "button" + i;                       bt.Height=17;
                       bt.ClientIDMode = ClientIDMode.Inherit;
                      
                       bt.Attributes.Add("style", "display:block");
                       bt.Attributes.Add("OnMouseOver", "javascript:display('" + bt.ClientID + "')");
                       bt.Click += new EventHandler(Buttonclick);
                       e.Row.Cells[i].Controls.Add(bt);



код JavaScript:

функциональный дисплей(кнопка) {
alert ("hello funtion execting" + кнопка);
var el = document. getElementById (кнопка);
alert (el);
Эл.стиль.дисплей = "никто";

}

2 Ответов

Рейтинг:
19

F-ES Sitecore

Вы должны помнить, что javascript работает от того, что отправляется в браузер, поэтому посмотрите на источник страницы, и вы увидите что-то вроде

<input type="submit" ID="GridView1_button1_0" OnMouseOver="javascript:display('button1')" />


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

Решение состоит в том, чтобы сначала добавить кнопку, чтобы она получила свой уникальный идентификатор, а затем использовать этот идентификатор в вашем js

bt = new Button();
bt.ID = "button" + i; // add the button right away
MyPanel.Controls.Add(bt);
bt.Height = 17;
// the rest of your code here and now bt.ClientID will return the correct value


Pragya Nagwanshi

Охх право Яа..Благодарю

Рейтинг:
10

Dusara Maulik

Привет Прагья,

Просмотрите приведенный ниже код, это вам очень поможет

Код на стороне сервера C# :

protected void Page_Load(object sender, EventArgs e)
        {

            List<string> strCol = new List<string>();


            for (int i = 0; i < 10; i++)
            {
                strCol.Add("DataRow" + i.ToString());
            }

            GridView1.DataSource = strCol;
            GridView1.DataBind();
            
        }

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            Button bt = new Button();
            bt.ID = "button" + e.Row.RowIndex; bt.Height = 17;
            bt.ClientIDMode = ClientIDMode.Inherit;

            bt.Attributes.Add("style", "display:block");
            bt.Attributes.Add("OnMouseOver", "javascript:display(this);return false;");
            e.Row.Cells[0].Controls.Add(bt);
        }


Код на стороне клиента:
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound">
                    <Columns>
                        <asp:TemplateField ></asp:TemplateField>
                    </Columns>
                </asp:GridView>

<script>

       function display(btnClicked)
       {
           alert($(btnClicked).attr('id'));
           $(btnClicked).hide();
       }

   </script>



Желаю удачи!! :)


Pragya Nagwanshi

Спасибо