GridView пытается выделить всю строку, кроме последнего столбца? - PullRequest
0 голосов
/ 31 января 2020

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


protected void GridView1_RowCreated(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(TakeGrid, "Select$" + e.Row.RowIndex);
    }
}

Ответы [ 3 ]

0 голосов
/ 31 января 2020

Попробуйте это ..... наведите указатель на HyperLink в событии RowDataBound. Вы используете много BoundFields, и это нормально, но это еще один способ нацелить элемент управления на каждую указанную c строку, когда вы привязываете.

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            HyperLink link = (HyperLink)e.Row.FindControl("lnk");

            if (link != null)
            {
                link.Visible = false;
            }
        }
    }

На вашем интерфейсе вы нужно добавить событие в GridView ....

<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound">
</asp:GridView>

Вот еще один пример, чтобы получить DataItem для GridView и затем выполнить logi c. Я создал образец класса MyProduct и представляю, что источником данных для моего GridView является Collection<MyProduct>().

    public partial class MyProduct
    {
        public string id { get; set; }
        public string name { get; set; }
        public string sku { get; set; }
    }

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            MyProduct rowData = (MyProduct)e.Row.DataItem;

            if (rowData != null)
            {
                // only hide link if property for product meets our logic
                if (string.Equals(rowData.sku, "MySkuProduct", StringComparison.InvariantCultureIgnoreCase))
                {

                    HyperLink link = (HyperLink)e.Row.FindControl("lnk");

                    if (link != null)
                    {
                        link.Visible = false;
                    }
                }

            }

        }
    }
0 голосов
/ 03 февраля 2020

Привет, ребята. Я нашел ответ на свой вопрос и понял, что задаю не тот вопрос. Вместо того, чтобы пропустить 11-й столбец, я просто применил клик к строкам, к которым он хотел присоединиться. например,

 protected void GridView1_RowCreated(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                for (int i = 0; i <= 10; i++)
                {
                    e.Row.Cells[i].Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(TakeGrid, "Select$" + e.Row.RowIndex);
                }
            }
        }

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

Строка Gridview кликабельна, за исключением первого столбца?

0 голосов
/ 31 января 2020

Это событие будет срабатывать всякий раз, когда вы создадите новую строку в gridview, и если вы хотите специально избежать 11-й строки, просто используйте условие and со свойством rowindex.

    protected void GridView1_RowCreated(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
    {
      if (e.Row.RowType == DataControlRowType.DataRow)
      {
        e.Row.Attributes["onclick"] = 
        Page.ClientScript.GetPostBackClientHyperlink(TakeGrid, "Select$" + e.Row.RowIndex);
       e.Row.Cells[11].Attributes.Remove("onclick");
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...