Как я могу получить доступ к тексту Buttonfields, если он не считается табличкой?

StackOverflow https://stackoverflow.com/questions/4760465

Вопрос

Я пытаюсь получить доступ к тексту из Buttonfield (Databound), но я не могу получить текст, если я называть его табличкой. Что я могу сделать, чтобы получить текст?

Разметка:

<asp:GridView ID="gvClass" runat="server" CssClass="grid" HeaderStyle-Font-Bold="true" Width="100%" OnSelectedIndexChanged="gvClass_SelectedIndexChanged" DataKeyNames="ClassID" AutoGenerateColumns="False" OnPageIndexChanging="gvClass_PageIndexChanging">
    <HeaderStyle Font-Bold="True" />
    <Columns>
        <asp:ButtonField DataTextField="ClassID" HeaderText="Class ID" CommandName="Select" />
        <asp:BoundField DataField="CourseName" HeaderText="Course Name" />
        <asp:BoundField DataField="WarehouseName" DataFormatString="Warehouse" HeaderText="Warehouse" />
        <asp:BoundField DataField="TrainerNames" HeaderText="Trainer(s)" />
        <asp:BoundField DataField="StartTime" HeaderText="Start Time" />
        <asp:BoundField DataField="Duration" HeaderText="Duration" />
        <asp:BoundField DataField="Course Category" HeaderText="Course Category" />
        <asp:BoundField DataField="Comment" HeaderText="Comment" />
    </Columns>
    <EmptyDataTemplate>
        <span class="italic grey">No Record Found</span>
    </EmptyDataTemplate>
</asp:GridView>

Код-бледность:

foreach (GridViewRow gvr in gvClass.Rows)
{
    foreach (TableCell tc in gvr.Cells)
    {
        stringToAppend = tc.Text;
        sb.Append(PRTL_UtilityPackage.FormatHtmlCharacters(stringToAppend) + " \t");
    }
    sb.Append("\\n");
}

Foreach (Tablecell TC в gvr.cells) предлагает пустую строку при просмотре на пуговицах.

Это было полезно?

Решение

Вы все еще можете использовать метод Tablecell:

protected void myGridView_DataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // You may have to play with the index of the control
        // I have found that often a GridView will place a 
        // Literal control as Control[0] and the LinkButton
        // as Control[1]. Once you find the index, it won't
        // change.
        LinkButton btn = (LinkButton)e.Row.Cells[0].Controls[1];
        string text = btn.Text;
    }
}

Другие советы

Dim lbtn As Button = DirectCast(gwvFileList.Rows(e.CommandArgument).Cells(1).Controls(0), Button)
Dim sName As String = lbtn.Text

Пример: http://www.editingmate.com

В Buttonfield есть еще один элемент управления в ячейке, который вам нужно, чтобы получить текст для:

Control control = gvr.Cells[0].Controls[0];
string text = string.Empty;
if (((ButtonField)gvClass.Columns[0]).ButtonType ==
    ButtonType.Link)
{
    LinkButton btn = control as LinkButton;
    text = btn.Text;
}
else
{
    Button btn = control as Button;
    text = btn.Text;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top