Выбранная строка GridView не будет извлекать данные - PullRequest
0 голосов
/ 05 июля 2011

У меня есть GridView, который я заполняю данными из моей базы данных. Данные отображаются отлично. Моя проблема в том, что я хочу иметь возможность щелкнуть строку и затем отобразить информацию, которая находится в этой строке в другом месте (в конце концов у меня будет разделительный экран для удобного форматирования выбранных данных). Выбор работает, потому что он выделяет текущую строку. Тем не менее, я не могу понять, как отображать эти данные в другом месте. Сейчас я пытаюсь отобразить содержимое одной ячейки в метке с именем testLabel. Я пробовал много разных методов, и testLabel никогда не обновляется, когда я щелкаю новую строку. Кто-нибудь может увидеть, что здесь происходит не так?

C #

protected void DefaultGrid_SelectedIndexChanged(Object sender, EventArgs e)
{
    GridViewRow row = DefaultGrid.SelectedRow;
    testLabel.Text = row.Cells[2].Text;
}

ASPX

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID = "ScriptManager" runat="server" />
    <div>
        <div>
            <asp:Label runat="server" id = "orderByLabel" Text = "Order By: " />


            <asp:DropDownList runat="server" ID="orderByList" AutoPostBack="true">
                <asp:ListItem Value="fName" Selected="True">First Name</asp:ListItem>
                <asp:ListItem Value="lName">Last Name</asp:ListItem>
                <asp:ListItem Value="state">State</asp:ListItem>
                <asp:ListItem Value="zip">Zip Code</asp:ListItem>
                <asp:ListItem Value="cwaSource">Source</asp:ListItem>
                <asp:ListItem Value="cwaJoined">Date Joined</asp:ListItem>
            </asp:DropDownList>
        </div>
        <div>
            <asp:Label runat="server" ID="searchLabel" Text="Search For: " />
            <asp:TextBox ID="searchTextBox" runat="server" Columns="30" />
            <asp:Button ID="searchButton" runat="server" Text="Search" />
        </div>
    <div align="center">
    <asp:UpdatePanel ID = "up" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID = "orderByList"
        EventName="SelectedIndexChanged" />
         <asp:AsyncPostBackTrigger ControlId="searchButton" EventName="Click" />
    </Triggers>

    <ContentTemplate>
        <asp:GridView ID="DefaultGrid" runat = "server" DataKeyNames = "fName"
        onselectedindexchanged = "DefaultGrid_SelectedIndexChanged"
        autogenerateselectbutton = "true"
        selectedindex="0">
        <SelectedRowStyle BackColor="Azure"
        forecolor="Black"
        font-bold="true" />
        <Columns>
            <asp:ButtonField CommandName="Select" Visible="false" />
        </Columns>
        </asp:GridView>
        </ContentTemplate>
        </asp:UpdatePanel>



    </div>
    </div>
    <div>
        <asp:Label runat="server" ID="testLabel" Text="test" />
    </div>
    </form>
</body>
</html>

Ответы [ 4 ]

1 голос
/ 05 июля 2011

Вы предоставили собственную кнопку выбора, а также установили для свойства http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.autogenerateselectbutton.aspx значение true.Вы должны выбрать только один из них.

Редактировать: Ах, посмотрите сейчас.Метка 'testLabel' находится за пределами панели обновления.Переместите его в ContentTemplate.

0 голосов
/ 05 июля 2011

Я сомневаюсь, что тебе DefaultGrid_SelectedIndexChanged когда-нибудь позвонят.Проверьте это: http://forums.asp.net/t/1448445.aspx

Цитата:

вам нужно поле кнопки или элемент управления обратной передачей, такой как кнопка, кнопка ссылки, кнопка изображения с commandName = "Select" для события selectedIndexChangedобработчик для запуска.

0 голосов
/ 05 июля 2011

Похоже, это должно работать. Вот несколько указателей:

  • При доступе к row.Cells[2].Text имейте в виду, что индекс основан на нуле (первая ячейка имеет индекс 0).
  • У вас есть фиксированный столбец, который невидим. Хотя этот столбец не отображается, он должен учитываться при индексировании номеров столбцов.
  • Поместите точку останова внутри DefaultGrid_SelectedIndexChanged. Когда дело доходит до того, дурачитесь с возможностями, наблюдая за переменными и вызывая методы. Это должно вам очень помочь.
0 голосов
/ 05 июля 2011

Вы пытались поместить testLabel в другую панель обновления и принудительно обновлять ее после изменения текста метки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...