Условное поле гиперссылки в виде сетки? ASP.net - PullRequest
0 голосов
/ 13 ноября 2009

Я помещаю поле гиперссылки в сетку, но иногда понимаю, что хочу, чтобы оно было кликабельным, а иногда нет, в зависимости от данных.

Если это A или B, я хочу гиперссылку на bibble.aspx? Id = 123, в противном случае я просто хочу простой текст.

Какой лучший способ? Должен ли я использовать другой тип поля для этого?

Ответы [ 3 ]

3 голосов
/ 13 ноября 2009
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
     onrowdatabound="GridView1_RowDataBound">
    <Columns>
        <asp:TemplateField HeaderText="Column to check">
            <ItemTemplate>
                <asp:Label runat="server" ID="lblCrtl" Text='<%# Eval("Name") %>' />
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Column Name">

        </asp:TemplateField>
    </Columns>
</asp:GridView>



protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // you may need to do this if you didnt use templatefield;
        // string val = e.Row.Cells[<column index>].Text;
        // if its templatefield do following;
        Label lbl = e.Row.FindControl("lblCrtl") as Label; 

        Button btn = null;

        if (lbl.Text == "Car") // put your own value to check, my case it was Car
        {
            btn = new Button();
            btn.Text = "Test";
            e.Row.Cells[1].Controls.Add(btn); // cells<column index that control will be added>
        }
    }
}
1 голос
/ 13 ноября 2009

Вероятно, вам лучше использовать поле шаблона и элемент управления гиперссылкой, когда NavigateUrl определяется троичным оператором.

0 голосов
/ 13 ноября 2009

Вам нужно обработать событие RowDataBound вашего GridView.

Эта ссылка демонстрирует, как использовать событие RowDataBound для изменения значения поля в источнике данных перед его отображением в элементе управления GridView.

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