Выбор конкретного столбца в сетке - PullRequest
0 голосов
/ 02 января 2019

У меня есть сетка, в которой я показываю несколько записей.При загрузке страницы я извлекаю данные из базы данных и заполняю сетку.У меня есть еще один столбец для редактирования и удаления, которые являются кнопки Image.Теперь я хочу, чтобы, когда пользователь нажимал кнопку редактирования, затем на основе идентификатора (из этой строки после нажатия пользователем) он / она перенаправлял на другую веб-форму с выбранным идентификатором, а затем этот человек записывает загрузки из базы данных и заполняет соответствующиеTextboxes.Я не обновляю записи в Gridview.Вот изображение для ясного понимания enter image description here

Вот мой код .aspx

<asp:GridView ID="dgvEmployeesInformation" runat="server" CssClass=" table table-bordered table-hover table-responsive" AutoGenerateColumns="false" OnRowCommand="dgvEmployeesInformation_RowCommand">
                <%--1st Column--%>
                <Columns>
                    <asp:BoundField  HeaderText="ID" DataField="Id" ShowHeader="false" Visible="false" ControlStyle-BackColor="#0066ff"/>
                    <asp:BoundField  HeaderText="Name" DataField="Name"/>
                    <asp:BoundField  HeaderText="Employee No" DataField="EmployeeNo"/>
                    <asp:BoundField  HeaderText="Father Name" DataField="FatherName"/>
                    <asp:BoundField  HeaderText="CNIC" DataField="CNIC"/>
                    <asp:BoundField  HeaderText="Contact No" DataField="ContactNo"/>
                    <asp:BoundField  HeaderText="City" DataField="City"/>
                    <asp:BoundField  HeaderText="Post" DataField="RecommendedPost"/>
                    <asp:BoundField  HeaderText="Status" DataField="Status"/>
                    <asp:BoundField  HeaderText="Degree Status" DataField="DegreeStatus"/>
                    <asp:TemplateField HeaderText="Action">
                        <ItemTemplate>
                            <asp:ImageButton ImageUrl="~/Images/edit.png" CommandName="Edit" Text='<%# Eval("ID") %>' ToolTip="Edit" Width="20px" Height="20px" runat="server"/>
                            <asp:ImageButton ImageUrl="~/Images/delete.png" CommandName="Delete" Text='<%# Eval("ID") %>' ToolTip="Delete" Width="20px" Height="20px" runat="server"/>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>

Вот код .aspx.cs

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            dgvEmployeesInformation.DataSource = GetData();
            dgvEmployeesInformation.DataBind();
        }
    }

    private DataSet GetData()
    {
        DataSet DS = new DataSet();
        using (SqlConnection con = new SqlConnection(Base.GetConnection))
        {

            SqlDataAdapter ad = new SqlDataAdapter("spSelectEmployeeSpecificRecord", con);
            ad.SelectCommand.CommandType = CommandType.StoredProcedure;
            ad.Fill(DS);
        }
        return DS;
    }
protected void dgvEmployeesInformation_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName.Equals("Edit"))
        {

        }
    }

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

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Попробуйте это

void yourGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
// If multiple buttons are used in a GridView control, use the
// CommandName property to determine which button was clicked.
if(e.CommandName=="Edit")
{
// Convert the row index stored in the CommandArgument
// property to an Integer.
int index = Convert.ToInt32(e.CommandArgument);

// Retrieve the row that contains the button clicked 
// by the user from the Rows collection.
GridViewRow row = ContactsGridView.Rows[index];
var yourID = row.Cells[0].Text;
//....
}
}

Вид сетки docs.microsoft.com

0 голосов
/ 02 января 2019

e.CommandArgument содержит индекс, который вы щелкнули по нему.и dgvEmployeesInformation.SelectedValue содержит идентификатор, который вы установили на DataKeyNames.

Установите на DataKeyNames поле базы данных, которое у вас есть, как id - в вашем случае DataKeyNames="EmployeeNo", а код может быть как

protected void dgvEmployeesInformation_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.Equals("Edit"))
    {
        int SelectedIndex;
        if (int.TryParse(e.CommandArgument.ToString(), out SelectedIndex))
        {
            // make it selected after the click
            dgvEmployeesInformation.SelectedIndex = SelectedIndex;

            // now the SelectedValue contains the id
            Edit(dgvEmployeesInformation.SelectedValue);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...