Как сделать видимым столбец gridview? - PullRequest
3 голосов
/ 18 октября 2011

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

Я хочу сделать это, когда нажимаю на кнопкуКнопка dept link делает видимым столбец emailID.Как я могу это сделать? Plaese ведет меня ..

Заранее спасибо.

Вот моя сетка:

            <asp:TemplateField>
                <ItemTemplate>
                    <asp:LinkButton ID="lnkbtnDept" runat="server" Text='<%#Bind("Department")%>' OnClick="lnkbtnTitle_Click" ></asp:LinkButton>                        
                </ItemTemplate>
                <ItemStyle HorizontalAlign="Left" Width="50%" />
            </asp:TemplateField>

            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Panel ID="pnlN24" runat="server" Visible="false">
                        <asp:Label ID="lblTotal" runat="server" Width="30" Text="abc"></asp:Label>
                    </asp:Panel>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

Ответы [ 5 ]

1 голос
/ 18 октября 2011

Вы должны обработать events из GridView элемента управления, особенно RowCommand.

public class Demo
{
    public string Dept { get; set; }
    public string Email { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        List<Demo> list = new List<Demo>()
        {
                new Demo() { Dept="A", Email="a@a.com" },
                new Demo() { Dept="B", Email="b@b.com" },
        };

        GridView1.DataSource = list;
        GridView1.DataBind();
    }

}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "cmd")
    {
        GridViewRow row = (e.CommandSource as LinkButton).NamingContainer as GridViewRow;
        Label email = row.Cells[1].FindControl("email") as Label;
        email.Visible = true;

    }
}
1 голос
/ 18 октября 2011

невозможно сделать ячейку видимой, если для свойства видимости столбца установлено значение false.поэтому для отображения видимой только соседней ячейки.

вы можете использовать только один столбец типа поля шаблона, а затем создать таблицу в этом поле шаблона и установить для td электронной почты значение false, а для команды строки в таблице -предыдущие ответы, делающие эту метку видимой, вы должны сделать свой тд видимым.

1 голос
/ 18 октября 2011

Понимая, что вы сделаете видимыми все ячейки в столбце для всех строк, вы можете обработать событие OnClick кнопки dept.Например.

<asp:LinkButton ID="lnkDept"  OnClick="LinkButton_Click" runat="server" Text="Department" />

Код:

 protected void LinkButton_Click(Object sender, EventArgs e) 
      {
         gridView1.Columns[1].Visible=true;
      }

Где gridView.Column[1] - столбец вашей электронной почты.

0 голосов
/ 10 января 2015
function validateColors(id) {
    var grid = document.getElementById("GridView1");   
    var label = grid.rows[id].cells[6].children[2];
    grid.rows[id].cells[6].children[2].style.visibility = "visible";
    grid.rows[id].cells[6].children[2].style.visibility = "hidden";
}
0 голосов
/ 18 декабря 2011
protected void lnkbtnTitle_Click(object sender, EventArgs e)
{
    GridViewRow gvrow = ((LinkButton)sender).Parent.Parent as GridViewRow;
    Panel pnlN24 = (Panel)gvrow.FindControl("pnlN24");
    pnlN24.Visible = true;
}  

Это очень просто, приведенный выше код будет работать.
Мы должны выяснить, в какой строке нажата кнопка LinkButton, которую мы можем получить из
следующего кода.Как только вы получите GridViewRow, найдите элемент управления в этой строке и сделайте его видимым

GridViewRow gvrow = ((LinkButton)sender).Parent.Parent as GridViewRow;

Как мы знаем,
Control <--- Cell <- GridViewRow <- GridView </p>

Например:
LinkButton <--- Cell <- GridViewRow <- GridView </p>

GridViewRow является родительским для ячейки, а Cell является родительским для элемента управления внутри ячейки (панели)

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