0

行の最後のセルの値がユーザーIDであるセッション値と等しい場合、削除ボタンの可視性をtrueに設定しようとしています

ギルドビュー更新:

<Columns>
<asp:TemplateField>
    <ItemTemplate>
        <%# Container.DataItemIndex + 1 %>
    </ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="attachID" HeaderText="Attachment ID" SortExpression="atID" HeaderStyle-CssClass="hidcol" ItemStyle-CssClass="hidcol"/>
<asp:BoundField DataField="attachmentTitle" HeaderText="Attachment Title" SortExpression="attachmentTitle" />
<asp:BoundField DataField="attachmentType" HeaderText="Attachment Type" SortExpression="attachmentType" />
<asp:BoundField DataField="attachmentDescription" HeaderText="Attachment Description" SortExpression="attachmentDescription" />
<asp:BoundField DataField="attachmentDate" HeaderText="Attachment Date" SortExpression="attachmentDate" />
<asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton ID="LinkButton1" runat="server" CommandName="download"  CommandArgument='<%# Eval("attachmentFile") %>'><img src="CSS/images/download.png" alt="Download File" /></asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
    <ItemTemplate>
       <asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="False" CommandArgument='<%# Eval("userID") %>' CommandName="Delete" ImageUrl="~/CSS/images/delete_page.png" Text="Delete" />
    </ItemTemplate>
</asp:TemplateField>
</Columns>

私は削除ボタンのプロパティを可視に設定しようとしていますuserIDsession["username"]

これが正しい方法かどうかはわかりません。

コードビハインド更新:

String searchValue = "" + Session["username"];

    foreach (GridViewRow row in GridView1.Rows)
    {
        // Only look in data rows
        if (row.RowType == DataControlRowType.DataRow ||
            row.RowType == DataControlRowType.EmptyDataRow)
        {
            // Find the delete button by ID
            ImageButton theDeleteButton = row.FindControl("ImageButton1") as ImageButton;

            // Verify the button was found before we try to use it
            if (theDeleteButton != null)
            {
                if (theDeleteButton.CommandArgument != searchValue)
                {
                    // Make the button invisible
                    theDeleteButton.Visible = false;
                }
            }

        }
    }

どうすれば実現できますか?

前もって感謝します!

コードが更新されました

4

1 に答える 1

1

次のように、削除ボタンを非表示にするコードをよりきれいにするため、ではなくTemplateField、属性を持つ削除ボタンに を使用することをお勧めしCommandNameます (ダウンロード リンク ボタンで行っていることと同様) 。CommandField

マークアップ:

<asp:TemplateField>
    <ItemTemplate>
        <asp:Button ID="ButtonDelete" runat="server" CommandName="delete"  
                    CommandArgument='<%# Eval("id") %>' Text="Delete" />
    </ItemTemplate>
</asp:TemplateField>

分離コード:

foreach (GridViewRow row in GridView1.Rows)
{
    // Only look in data rows
    if (row.RowType == DataControlRowType.DataRow || 
        row.RowType == DataControlRowType.EmptyDataRow)
    {
        // Find the delete button by ID
        Button theDeleteButton = row.FindControl("ButtonDelete") as Button;

        // Verify the button was found before we try to use it
        if(theDeleteButton != null)
        {
            // Make the button invisible
            theDeleteButton.Visible = false;
        }
    }
}

注:試行されたキャストが正常に完了しない場合、asオペレーターは戻ります。nullしたがって、変数nullに対するチェック。theDeleteButton

于 2013-11-10T17:23:54.710 に答える