2013-09-14 2 views
1

У меня динамически создано GridView в моем .aspx от codebehind. Я вставил таблицу sql в GridView. Затем я добавил еще одну колонку, отмеченную кнопками. Вот код:Как сделать событие клика для поля кнопки в виде сетки asp.net

ButtonField bf = new ButtonField(); 
bf.Text = "Details"; 
bf.ButtonType = ButtonType.Button; 

DataTable table = new DataTable(); 
table.Load(reader); 
GridView gv = new GridView(); 
gv.Columns.Add(bf); 
gv.DataSource = table; 
gv.DataBind(); 

Теперь я хочу добавить MouseClickEvent на этом ButtonField, но нет никакой собственности Click или MouseClick. Есть какой-либо способ сделать это?

ответ

2

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

  1. Есть скрытые кнопки сразу после GridView, эта кнопка имеет событие onclick (скажем, OnDetailsButtonClick). Таким образом, эта кнопка является той, которая будет делать представление.
  2. Создайте скрытое поле, которое будет заполнено при нажатии на действие из строки, так что код на стороне сервера будет забирать, какая строкаИдейно, что действие было выполнено на
  3. Сделать каждую кнопку в gridview для включения OnClientClick (позволяет сказать, что Java-функция называется goToDetails(entityId)) поэтому Javascript функция будет выглядеть следующим образом:
function goToDetails(entityId){ 
    $("#HiddenEntityId").val(entityId); 
    $("#Button").click() 
} 

из кода позади вы можете получить строку/идентификатор объекта из скрытого поля:

private void OnDetailsButton_Click(object sender, EventArgs e){ 
    string entityId = HiddenEntityId.Value; 
    //now you can do whatever you like 
} 
4

Для ButtonField внутри GridView вы задаете CommandName:

bf.CommandName = "MyCommand"; 

И доступ к нему нравится:

void gv_RowCommand(Object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "MyCommand") 
    { 
    } 
} 

Вы можете найти его полезным: ButtonField.CommandName Property.

0

Вы должны использовать ручку «Gridview.RowCommand», чтобы включить пользовательский сценарий для кнопки в ButtonField ..

Т.е.

1) добавить свойство 'Имя_команды' к вашему buttonfield, этот пример предполагает, что Имя_команды = "Удалить"

2)

Protected Sub GridView1_buttonsclicked(sender As Object, e As GridViewCommandEventArgs) Handles GridView1.RowCommand 

    If e.CommandName = "Delete" Then 
     'Delete clicked with index of " + e.CommandArgument.ToString 

     'Your code here, using the e.commandargument as the gridview index, then select column values using that index. 

    End If 

End Sub 
Смежные вопросы