ASP.NET GridView делает видимой только одну ячейку - PullRequest
0 голосов
/ 20 октября 2011

У меня есть GridView с ButtonField типа link

 <asp:ButtonField ButtonType="Link" CommandName="more" HeaderText="Name Expands" DataTextField="name" />

Когда кнопка buttonField нажата, я хочу показать одну дополнительную ячейку в следующем столбце.НО я не хочу показывать весь столбец, только ячейку в этом столбце, которая принадлежит этой строке.

, поэтому я создал следующее

protected void gv2_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "more")

, и e.CommandArgument сообщает мненомер строки, которая была нажата

, если теперь я скажу "gv2.Columns [3] .Visible = true; весь дополнительный столбец станет видимым, здесь я хотел бы показать только одну ячейку из этого столбца.

и если я скажу:

gv2.Rows[Convert.ToInt32(e.CommandArgument)].Visible = true;   

, тогда дополнительный столбец с нужным мне полем останется невидимым.

как я могу это сделать?

МногиеСпасибо!

Ответы [ 2 ]

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

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

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

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;

        }
    }
0 голосов
/ 24 октября 2011

Я не нашел способ сделать это.Вместо этого я выбрал создание другого вида сетки "gv2", который невидим.Когда пользователь щелкает одно из полей кнопок, в функции RowCommand я собираю нужную мне информацию и помещаю ее в невидимую сетку + ячейку, которую я хотел сделать видимой.

, так как я использую AJAX с "Обновление панели "выглядит не так уж плохо. (это мое мнение)

Здесь вы можете увидеть, как это выглядит http://www.nicoteksolutions.com/Forms/feed.aspx

Спасибо!Нико

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