Во-первых, вот небольшая скрипка для представления моего gridview.
У меня есть gridview, где я объединил ячейки в некоторые строки. Затем мне нужно иметь возможность получать данные из обеих ячеек, которые не были объединены, и скрепленные ячейки.
Поэтому у меня есть OnRowCommand, который принимает commandArgument <%#Eval("col3")%>
. Это отлично работает для строк, у которых его не было, но для строк с longcell
это не сработает. Я также пробовал <%#Eval("col2")%>
без успеха.
вот код gridview (упрощенный):
<asp:GridView ID="myGridview" runat="server" AutoGenerateColumns="false"
OnRowCommand="myGridview_RowCommand">
<Columns>
<asp:BoundField DataField="col1" HeaderText="col1" />
<asp:BoundField DataField="col2" HeaderText="col2" />
<asp:BoundField DataField="col3" HeaderText="col3" />
<asp:TemplateField>
<HeaderTemplate>
Actions
</HeaderTemplate>
<ItemTemplate>
<asp:ImageButton ID="imbEdit" runat="server" ImageUrl="~/css/images/Edit.png" Width="16" CommandName="wEdit" CommandArgument='<%#Eval("col3")%>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
здесь я объединяю ячейки:
foreach (int i in rowIndexes)
{
myGridview.Rows[i].Cells[1].ColumnSpan = 2;
myGridview.Rows[i].Cells.RemoveAt(2);
}
После еще нескольких переходов и поиска я смог найти этот вопрос, где Элф сделал ответ, который мне очень помог.
Теперь я использую CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'
чтобы получить индекс, а затем я работаю оттуда: P