maverick12131 Ответов: 3

Создайте существующий столбец в gridview в виде гиперссылки


<asp:GridView ID="GridView1" runat="server" BackColor="White"

               BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4"

               ForeColor="Black" GridLines="Vertical">
               <RowStyle BackColor="#F7F7DE" />
               <FooterStyle BackColor="#CCCC99" />
               <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
               <EmptyDataTemplate>
                   No Data Found
               </EmptyDataTemplate>
               <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
               <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
               <AlternatingRowStyle BackColor="White" />
           </asp:GridView>


по коду позади меня
protected void Page_Load(object sender, EventArgs e)
        {DataSet dt = GetExistingRecords();
                GridView1.DataSource = dt;
                GridView1.DataBind();
        }

private DataSet GetExistingRecords()
        {
            DataSet dt = new DataSet();
            try
            {
                
                OleDbConnection thisConnection = new OleDbConnection(connStr);
                thisConnection.Open();
                string query = "Select Call, EnteredYear, Qrt_Mnth, CreateDt, FilingFile, FilingVolSr, ProjNbr from tbl_DataTracking";
                OleDbCommand command = new OleDbCommand(query, thisConnection);
                var myAdapptor = new OleDbDataAdapter();
                //OleDbCommand command = new OleDbCommand("SELECT * FROM tbl_EStamps", thisConnection);
                myAdapptor.SelectCommand = command;
                myAdapptor.Fill(dt);
                thisConnection.Close();
               
            }
            catch(Exception e)
            {
                Response.Write("Error ->  " + e);
            }
            return dt;
        }<pre />

now here in my grid view i do not have bound fields.
if I add bound fields the grid containsduplicates
i want the first column to be hyperlink.
Please tell me how to do it.

3 Ответов

Рейтинг:
24

Prasad_Kulkarni

Попробовать это:

void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        var firstCell = e.Row.Cells[0];
        firstCell.Controls.Clear();
        firstCell.Controls.Add(new HyperLink { NavigateUrl = firstCell.Text, Text = firstCell.Text });
    }
}

Имейте в виду, что если вы привязываете данные к сетке только при первой загрузке страницы, то ваши изменения исчезнут.
Найти ее: здесь[^]


maverick12131

Огромное спасибо :)

Prasad_Kulkarni

Рад, что это помогает!
Спасибо, что приняли решение.

Рейтинг:
2

Member 2244190

Это сработало великолепно. У меня действительно была проблема с изменением идентификатора столбца. Поэтому я написал процедуру, чтобы получить идентификатор столбца по имени.

В моем случае я искал "путь" в качестве имени моей колонки.

protected void gvResults_RowDataBound(object sender, GridViewRowEventArgs e)
        {

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var firstCell = e.Row.Cells[GetColumnIndexByName(e.Row,"Path")];
                firstCell.Controls.Clear();
                //firstCell.Controls.Add(new HyperLink { NavigateUrl = firstCell.Text, Text = firstCell.Text, Target = "_blank" });
                firstCell.Controls.Add(new HyperLink { NavigateUrl = firstCell.Text, Text = "Click Here", Target = "_blank" });
            }
        }


private int GetColumnIndexByName(GridViewRow row, string columnName)
        {
            int columnIndex = 0;
            int foundIndex = -1;
            foreach (DataControlFieldCell cell in row.Cells)
            {
                if (cell.ContainingField is BoundField)
                {
                    if (((BoundField)cell.ContainingField).DataField.Equals(columnName))
                    {
                        foundIndex = columnIndex;
                        break;
                    }
                }
                columnIndex++; // keep adding 1 while we don't have the correct name
            }
            return foundIndex;
        }


CHill60

Вы балександр?

Рейтинг:
1

Mukesh Ghosh

ou have to make that column as Template Column

<asp:TemplateField HeaderText="">
  <ItemTemplate>
   <asp:HyperLink ID="HyperLink1" runat="server" Text="test" NavigateUrl='<%# Eval("fieldName", "show.aspx?ID={0}") %>'></asp:HyperLink>
  </ItemTemplate>
</asp:TemplateField>