SPGridView SelectedRow.Cells[] retorna valor vazio
-
29-09-2020 - |
Pergunta
Eu criei um controle SPGridView em minha web part visual.Dentro do SPGridView, existe um controle SPHyperLink que armazena alguma URL. Ao acessar esse valor usando SPGridView SelectedRow.Cells[3].Text, estou obtendo um valor vazio.
Controle SPGridView
<SharePoint:SPGridView ID="ShowNode" runat="server" AutoGenerateColumns="false"
AllowSorting="true" OnRowDataBound="ShowNode_RowDataBound" OnSelectedIndexChanged="ShowNode_RowIndexChanged" OnSorting="ShowNode_Sort" OnRowCommand="ShowNode_RowClick">
<Columns>
<asp:ImageField HeaderText="Icon" DataImageUrlField="Img" HeaderStyle-HorizontalAlign="Left"></asp:ImageField>
<SharePoint:SPBoundField HeaderText="Name" DataField="Title" HeaderStyle-HorizontalAlign="Left" SortExpression="Name"/>
<SharePoint:SPBoundField HeaderText="Type" DataField="Type" HeaderStyle-HorizontalAlign="Left" SortExpression="Type" />
<asp:HyperLinkField DataTextField="Link" HeaderText="Link" Visible="false" HeaderStyle-HorizontalAlign="Left"/>
</Columns>
</SharePoint:SPGridView>
Evento de clique na linha
protected void ShowNode_RowIndexChanged(object sender, EventArgs e)
{
int ind = ShowNode.SelectedRow.RowIndex;
string link = ShowNode.SelectedRow.Cells[3].Text;
}
Solução 2
Consegui obter os valores usando o atributo SPGridView DataKey.
Controle GridView
<SharePoint:SPGridView ID="ShowNode" runat="server" AutoGenerateColumns="false" AllowSorting="true" ShowFooter="true" ShowHeader="true" DataSourceID="" DataKeyNames="Link,Type" OnRowDataBound="ShowNode_RowDataBound" OnSelectedIndexChanged="ShowNode_RowIndexChanged" OnSorting="ShowNode_Sort" EnableViewState="true" >
<Columns>
<asp:ImageField HeaderText="Icon" DataImageUrlField="Img" HeaderStyle-HorizontalAlign="Left">
</asp:ImageField><SharePoint:SPBoundField HeaderText="Name" DataField="Name" HeaderStyle-HorizontalAlign="Left" SortExpression="Name"/>
<SharePoint:SPBoundField HeaderText="Type" DataField="Type" HeaderStyle-HorizontalAlign="Left" />
<asp:HyperLinkField DataTextField="Link" HeaderText="Link" Visible="false" HeaderStyle-HorizontalAlign="Left"/>
</Columns>
</SharePoint:SPGridView>
Código por trás
string u= ShowNode.DataKeys[ShowNode.SelectedRow.RowIndex]["Link"].ToString();
string t = ShowNode.DataKeys[ShowNode.SelectedRow.RowIndex]["Type"].ToString();
Outras dicas
Tente remover a propriedade "Visible = false" do campo de hiperlink e verifique se ele não deve retornar um valor vazio.
Estou obtendo valor do meu lado.Tente depurá-lo e ver na janela "Shift F9" Navegue até lá, pois isto irá ajudá-lo a encontrar o valor de um determinado controlo.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange