LinkButton - связать поле с всплывающей подсказкой или CSSClass - PullRequest
0 голосов
/ 05 августа 2011

У меня есть устаревшее приложение asp.net 3.5. Мне нужно привязать файл к CssClass, чтобы я мог использовать его через jquery.

По сути, в сетке данных есть 2 кнопки. Первая кнопка видна, а вторая не видна. При нажатии кнопки 1 я хочу выполнить действие, а затем сделать кнопку 2 видимой и скрыть кнопку 1. Как я могу это сделать? Мне просто нужен удар в правильном направлении ...

<asp:LinkButton ID="lnkDelete" runat="server" 
    ToolTip="Delete Order <%# DataBinder.Eval(Container.DataItem, "TransID")%>" 
    OnClientClick="return DeleteOrder();"                                                
    OnClick="OrderDelete" CommandArgument='<%# Eval("TransID")' 
    CssClass=""> 
    <asp:Image ID="Image1" runat="server" ImageUrl="~/images/icons/delete.gif"
        BorderStyle="None" />
</asp:LinkButton>

Моя текущая привязка внутри всплывающей подсказки приводит к ошибке «серверный тег сформирован неправильно».

В коде OrderDelete я могу отключить ссылку удаления, но как сделать другую кнопку видимой?

//delete indivisual order
protected void OrderDelete(object sender, EventArgs e)
{
    string transactionID = String.Empty;
    LinkButton lnkDelete = (LinkButton)sender;
    if (lnkDelete != null)
        transactionID = lnkDelete.CommandArgument;

    if (!String.IsNullOrEmpty(transactionID))
    {
        //do delete
    }
    //refresh results

}

1 Ответ

1 голос
/ 05 августа 2011

Если тег сервера неправильно сформирован, попробуйте что-то вроде этого:

ToolTip='<%# String.Format("Delete Order {0}",  DataBinder.Eval(Container.DataItem, "TransID")%>'

Для второй части вашего вопроса, немного больше кода может помочь дать вам более конкретный ответ, но вместо этого, если вы знаете, в какой строке DataGrid вы находитесь, вы сможете выполнить FindControl в этой строке для второй кнопки и сделать ее видимой.

Обновление

Вы можете попробовать установить всплывающую подсказку в коде, используя событие RowDataBound. Примерно так:

protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e)
{

    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        LinkButton btn = e.Row.FindContorl("lnkDelete") as LinkButton;

        // You'll need to retrieve the values you want to dynamically populate 
        // the ToolTip with from other controls in the row;
        // I don't know if you'd be able to use the DataSource or not, but you might.
        btn.ToolTip = "Delete Order "; 
    }
}
...