Получение информации из базы данных из видов сетки, которая не отображается в виде сетки - PullRequest
0 голосов
/ 12 мая 2009

Я создал элемент управления Gridview, который извлекает некоторые данные из моей базы данных, но не отображает всю информацию, которую, я надеюсь, он собирает. Я предпочитаю не отображать первичный ключ для целей пользовательского интерфейса, но требую этот ключ для основных операций в сетке.

В настоящее время я пытаюсь добавить опцию «Удалить» в таблицу, но, к сожалению, мне очень мало везет. Вот мой файл .aspx.

 <asp:GridView ID="ManagerList_GV" runat="server"
                AutoGenerateColumns="False" AllowSorting="True"
                DataKeyNames = "ManagerID" OnRowEditing="editManager"
                OnRowDataBound="FormatManagers" CellPadding="3" >
                <Columns>
                    <asp:BoundField HeaderText="Manager" DataField="FullName" />
                    <asp:BoundField HeaderText="Status" DataField="Status" />
                    <asp:CommandField EditText="Edit" ShowEditButton="True" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:LinkButton Text="Delete" runat="server" CommandName="deleteRow" />
                        </ItemTemplate>
                    </asp:TemplateField>            
                </Columns>
            </asp:GridView>

К сожалению, я не уверен, что делать для моего бэк-энда. Я создал подпрограмму для хранимой процедуры и бизнес-уровня, но я не уверен, как: а) узнать, в какой строке был только что выполнен щелчок, а затем б) получить доступ к первичному ключу относительно этой строки, поскольку я его не отображаю (первичный ключ - ManagerID).

Заранее спасибо за помощь:)

Ответы [ 2 ]

4 голосов
/ 12 мая 2009

Я бы создал поле кнопки, но я думаю, что поле шаблона также должно работать:

<asp:ButtonField ButtonType="Link" Text="Delete" CommandName="Delete" />

Затем вы хотите обработать событие RowDeleting Gridview:

Private Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles Gridview1.RowDeleting
    Dim ManagerIdToDelete As Int32 = CType(CType(sender, GridView).DataKeys(e.RowIndex).Value, Int32)
    'Now call your delete command with the id
End Sub
0 голосов
/ 12 мая 2009

Добавьте BoundColumn, отображающий первичный ключ как видимый в режиме конструктора, но после привязки данных сделайте столбец с установленным PK в видимое значение false.

, например

<Columns>                    
        <asp:BoundField HeaderText="PrimaryKey" DataField="ManagerID" /> 
        <asp:BoundField HeaderText="Manager" DataField="FullName" />                                      
    ....                                       
</Columns>

Серверная сторона:

ManagerList_GV.DataSource = ??;
ManagerList_GV.DataBind();
ManagerList_GV.Columns[0].Visible = false;

Это было преднамеренно, чтобы по соображениям безопасности PK не сохранялся во ViewState. Затем вы можете добавить событие RowDeleting и получить доступ к первичному ключу, используя

ManagerList_GV.Rows[e.RowIndex].Cells[0].Text;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...