Проблема с модальным всплывающим окном и загрузкой в ​​gridview - PullRequest
1 голос
/ 02 февраля 2012

У меня вид сетки со следующими полями

Вложение (кнопка ссылки) и комментарий (кнопка ссылки)

Когда я нажимаю на вложение, я хочу скачать файл, а когда я нажимаю на Комментарии, я хочу показать комментарий во всплывающем окне. Для этого я использовал модальное всплывающее окно.

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

Моя сетка выглядит следующим образом

<asp:GridView ID="grdAttaches_Client" runat="server" AutoGenerateColumns="false"
    CssClass="GridViewStyle" Width="585px" OnRowCommand="grdAttaches_Client_RowCommand"
    OnRowDataBound="grdAttaches_Client_RowDataBound">
    <Columns>
        <asp:TemplateField HeaderText="Attachment Name">
            <ItemTemplate>
                <asp:LinkButton ID="lblAttachmentName" Text='<%#Eval("AttachmentName")%>' runat="server" CommandName='Attachement' CommandArgument='<%# ((GridViewRow) Container).RowIndex %>' />
                <asp:Label ID="lblAttachmentid" runat="server" Visible="false" Text='<%#Eval("Attachmentid")%>'></asp:Label>
            </ItemTemplate>
            <ItemStyle CssClass="grid-left-txt2" />
        </asp:TemplateField>
        <asp:TemplateField HeaderText=" Comment">
            <ItemTemplate>
                <asp:LinkButton ID="LinkButtonEdit" CommandName="ShowPopup" OnClick="lnkcommentsClick" runat="server"
                    Text='<%# Eval("Comments").ToString().Substring(0, Math.Min(Eval("Comments").ToString().Length, 10)) %>' CommandArgument='<%# ((GridViewRow) Container).RowIndex %>' > </asp:LinkButton>
                <asp:Label ID="lblComments1" runat="server" Visible="false" Text='<%#Eval("Comments")%>'></asp:Label>
            </ItemTemplate>
            <ItemStyle CssClass="grid-left-txt2" />
        </asp:TemplateField>
    </Columns>
    <RowStyle CssClass="RowStyle" />
    <EmptyDataRowStyle CssClass="EmptyRowStyle" />
    <PagerStyle CssClass="PagerStyle" />
    <HeaderStyle CssClass="HeaderStyle" />
    <EditRowStyle CssClass="EditRowStyle" />
    <AlternatingRowStyle CssClass="AltRowStyle" />
    <SelectedRowStyle CssClass="grid_data" />
    <PagerSettings Position="TopAndBottom" />
</asp:GridView>

В строке команды я пишу следующим образом

if (e.CommandName == "Click")
{
    GridViewRow gvRow = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
    LinkButton lbl_bs_id = (LinkButton)gvRow.FindControl("lnkcomments");
    //Response.Write(lbl_bs_id.Text);
    lnkcommentsClick(lbl_bs_id, EventArgs.Empty);
}
else
{
    string fname = e.CommandName.ToString();
    int aid = Convert.ToInt32(e.CommandArgument.ToString());
    FileDownload(fname, true, aid);
}

Мой код в комментариях нажмите

protected void lnkcommentsClick(object sender, EventArgs e)
{
    LinkButton lnkdetails = sender as LinkButton;
    // lnkdetails=(LinkButton)e.fi
    GridViewRow gvrow = (GridViewRow)lnkdetails.NamingContainer;
    if (lnkdetails.Text != string.Empty)
    {
        lblPopUp.Text = lnkdetails.Text;
        mpeModalPopUp.Show();
    }
}

Но я не могу разобраться с этим несколько раз. Когда страница была загружена, я могу показать всплывающее окно или загрузку файла. Что делать, чтобы работать все время

1 Ответ

0 голосов
/ 02 февраля 2012

Я как-то воссоздал похожий сценарий, чтобы попытаться помочь вам, все это в VB.Net.

Это работает каждый раз, когда я выполняю обратную передачу или перезагружаю страницу, вот что я понимаю, когда вы говорите «Несколько раз»

Gridview:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
         <Columns>
        <asp:TemplateField HeaderText="Attachment Name">
            <ItemTemplate>
                <asp:LinkButton ID="lblAttachmentName" Text='<%#Eval("AttachmentName")%>' runat="server" CommandName="Attachement" CommandArgument='<%# (CType(Container,GridViewRow)).RowIndex %>' />
                <asp:Label ID="lblAttachmentid" runat="server" Visible="false" Text='<%#Eval("Attachmentid")%>'></asp:Label>
            </ItemTemplate>
            <ItemStyle CssClass="grid-left-txt2" />
        </asp:TemplateField>
        <asp:TemplateField HeaderText=" Comment">
            <ItemTemplate>
                <asp:LinkButton ID="LinkButtonEdit" CommandName="ShowPopup" OnClick="lnkcommentsClick" runat="server"
                    Text='<%# Eval("Comments").ToString().Substring(0, Math.Min(Eval("Comments").ToString().Length, 10)) %>' CommandArgument='<%# (CType(Container,GridViewRow)).RowIndex %>' > </asp:LinkButton>
                <asp:Label ID="lblComments1" runat="server" Visible="false" Text='<%#Eval("Comments")%>'></asp:Label>
            </ItemTemplate>
            <ItemStyle CssClass="grid-left-txt2" />
        </asp:TemplateField>
    </Columns>
        </asp:GridView>

Код страницы позади:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim grdPosts As New Posts()

        Dim post1 As New Post()
        post1.Comments = "Comment1"
        post1.AttachmentId = "1"
        post1.AttachmentName = "file1.jpg"

        Dim post2 As New Post()
        post1.AttachmentId = "2"
        post2.Comments = "Comment2"
        post2.AttachmentName = "file2.jpg"

        grdPosts.Add(post1)
        grdPosts.Add(post2)

        Me.GridView1.DataSource = grdPosts
        Me.GridView1.DataBind()


    End Sub

    Protected Sub lnkcommentsClick(ByVal sender As Object, ByVal e As System.EventArgs)

        Dim lnkdetails As LinkButton = TryCast(sender, LinkButton)
        MsgBox("LinkDetailsText: " & lnkdetails.Text)

    End Sub

    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand

        If e.CommandName = "Attachement" Then

            Dim fname As String = e.CommandName.ToString()
            Dim aid As Integer = Convert.ToInt32(e.CommandArgument.ToString())
            MsgBox("fname: " & fname & Boolean.TrueString & " iad: " & aid)

        End If

    End Sub

Поскольку это работает, возможно, проблема связана с реализацией методов lnkcommentsClick и FileDownload ?.

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