#asp.net #gridview #row
#asp.net #просмотр сетки #строка
Вопрос:
Я написал код для отображения выбранной строки в форме, имеющей метки, и большая часть данных в gridview хранится в labels , но одна ячейка хранит данные в элементе div . Итак, вопрос в том, как извлечь эти данные из элемента div и отобразить их в label.
Это мой aspx-код gridview
<asp:TemplateField HeaderText="DOC PATH" HeaderStyle-BackColor="DarkGreen" HeaderStyle-ForeColor="White">
<ItemTemplate>
<div id="DIV1" style="width: 100px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis">
<%#Eval("[DOC PATH]") %>
</div>
</ItemTemplate>
</asp:TemplateField>
Это мой код, лежащий в основе
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = GridView1.SelectedRow;
lblTASKIDOUTPUT.Text = (row.FindControl("TASKID") as Label).Text;
lblDescOutput.Text = (row.FindControl("DESC") as Label).Text;
lblFrequencyOutput.Text = (row.FindControl("FREQUENCY") as Label).Text;
lblDocPathOutput.Text = row.Cells[4].Text;
}
Вышеупомянутые три lblTASKIDOUTPUT, DescOutput и FrequencyOutput все работают, потому что они были сохранены в виде меток в полях шаблона в режиме grid . Но проблема заключается в 4-м пути к документу
Ответ №1:
Здесь вы можете использовать буквальное управление. Вместо отображения текста непосредственно под div используйте буквальный элемент управления, который не отображает никаких html-тегов.
<asp:TemplateField HeaderText="DOC PATH" HeaderStyle-BackColor="DarkGreen" HeaderStyle-ForeColor="White">
<ItemTemplate>
<div id="DIV1" style="width: 100px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis">
<asp:Literal ID="literalPath" runat="server" Text='<%#Eval("[DOC PATH]") %>'></asp:Literal>
</div>
</ItemTemplate>
</asp:TemplateField>
Затем вы можете получить доступ к элементу управления literal, как показано ниже
Literal literalPath= row.FindControl("literalPath") as Literal;
Это позволит вам использовать его в дальнейшем