Поле гиперссылки asp.net устанавливает значение navigationurl http=blabla/Id= из базы данных

Я новичок в asp.net. Пожалуйста помоги. У меня есть 2 файла. Один default.aspx, один default.aspx.cs.

В default.aspx у меня есть:

<asp:GridView ID="DataGridView" runat="server" AutoGenerateColumns="false" RowStyle-BackColor="#A1DCF2" HeaderStyle-BackColor="#3366FF" HeaderStyle-ForeColor="White">
    <rowstyle backcolor="LightCyan" forecolor="Black" font-italic="true"/>

     <alternatingrowstyle backcolor="PaleTurquoise" forecolor="Black" font-italic="true"/>

    <Columns>
        <asp:BoundField ItemStyle-Width="15%" DataField="ID" HeaderText="ID" />

        <asp:hyperlinkfield text="Log" navigateurl="http://somelink&RecordId=" target="_blank" ItemStyle-Width="15%" HeaderText="Log" />

        <asp:BoundField ItemStyle-Width="15%" HeaderText="Delayed Delivery" />
    </Columns>
</asp:GridView>

Мои вопросы:

Столбец: журнал гиперссылки:

  1. Я хочу привязать его к столбцу в базе данных с именем «Base_Id», но когда я использую DataField = «Base_Id» в определении гиперссылки, это дает ошибку;

  2. Я хочу добавить base_Id в конец URL-адреса, чтобы он давал navigationurl="http://somelink&RecordId=baseId_value" ; Я попробовал TemplateField, но Visual Studio его не распознает.

  3. для отложенной доставки мне нужно сравнить данные и немного посчитать. Есть ли способ добавить функцию в default.aspx.cs? если есть, может ли кто-нибудь привести пример, пожалуйста?

Любые идеи приветствуются. Большое спасибо. знак равно


person user2751691    schedule 28.10.2013    source источник


Ответы (1)


Преобразовать столбец

  <asp:hyperlinkfield text="Log" navigateurl="http://somelink&RecordId=" target="_blank" ItemStyle-Width="15%" HeaderText="Log" />

в TemplateColumn и сделайте это

<asp:TemplateField HeaderText="Log" ItemStyle-Width="15%">
        <ItemTemplate>
            <asp:HyperLink runat="server" 
                NavigateUrl='<%# GetUrl(Eval("Base_Id"))%>' 
                text="Log"></asp:HyperLink>
        </ItemTemplate>
    </asp:TemplateField>

и в коде программной части

protected string GetUrl(object id)
{
return "http://somelink&RecordId=" + id;
}

Надеюсь это поможет!

С уважением, Урош

person Uroš Goljat    schedule 28.10.2013
comment
@Uros: Привет, спасибо за ответ. Я попробовал: ‹asp:hyperlinkfield text=Event Horizon Log navigationurl=‹%# GetNavigationUrl(Eval(Base_Id))%› target=_blank ItemStyle-Width=15% HeaderText=Log /› и добавил функцию: protected string GetNavigationUrl(object base_id) { return somelink&RecordId= + base_id; } Но это дало мне ошибку, говорящую, что для поля гиперссылки нет привязки данных. любые идеи, пожалуйста - person user2751691; 28.10.2013
comment
Привет, я исправил свой пост. Вы забыли преобразовать поле гиперссылки в поле шаблона. - person Uroš Goljat; 28.10.2013
comment
@UrošGoljat: привет, у меня есть еще одна мини-проблема, помоги, пожалуйста, если у тебя есть время. Я хочу, чтобы текст гиперссылки показывал base_id, но datafield=base_id не работает, поскольку он говорит, что это не атрибут гиперссылки. Я использовал функцию, которая возвращает base_id в виде строки и text=returned_string, но есть ли более простой способ, например просто использование datafieldtext=base_id_column_in_database? Помогите, пожалуйста. знак равно - person user2751691; 29.10.2013
comment
Привет, вы можете сделать это Text='‹%#Eval(Base_Id)%›' вместо Text=Log - person Uroš Goljat; 29.10.2013
comment
Это действительно полезно! - person shivani; 01.04.2019