0

重複の可能性:
ASP.net ページの条件付きロジック

ASP.NET は初めてです。

いくつかのテーブルがあり、TD タグを使用して GridView と DetailsView を横に配置したテーブルがあるとします。これらの DetailsView と GridView は、1 回クリックして別の更新を行うなどの関連性はなく、レコードを表示するだけであることに注意してください。DetailsView には、追加、編集、および削除オプションもあります。以下の例。

<form name="form1" runat="server" class="FormDetail">
<table width="80%" align="center" >
    <tr>
        <td width="20%"></td>
        <td width="80%" class="PageTitle"></td>
        <td width="20%">
            <asp:Button runat="server" CommandName="AddNewProposal" ID="AddNewProposal" Text="Create Note" 
            href="ProposalCreateNote.aspx?ProposalID=ProposalID=" 
            title="Create Note" class="button3"/>           
        </td>
    </tr>
</table>   

    <div style="width:40%; margin-right: auto; margin-left: auto;">
        <asp:DetailsView AutoGenerateRows="False" DataKeyNames="ProposedID" DataSourceID="SqlDataSource2"
            HeaderText="Proposal Detail View" ID="DetailsView1" 
            runat="server" Width="100%" validateRequest="false" 
            CssClass="products"
            HeaderStyle-CssClass="header"
            FieldHeaderStyle-CssClass="fieldHeader"
            AlternatingRowStyle-CssClass="alternating"
            RowStyle
            CommandRowStyle-CssClass="command"
            PagerStyle-CssClass="pager"
            >

        <Fields>
            <asp:TemplateField HeaderText="ProposedID" SortExpression="Name" > 
                <ItemTemplate >
                    <asp:Label ID="ProposalID" runat="Server" style="text-align:left;" 
                     Text='<%# Eval("ProposedID")%>' />
                </ItemTemplate>
            </asp:TemplateField>

            <asp:BoundField DataField="MDFName" HeaderText="MDF Name" SortExpression="MDFName" />  

                <asp:TemplateField HeaderText="VendorName">
                    <ItemTemplate>
                        <asp:Label ID="lblVendorName" runat="Server" style="text-align:left;" Text='<%# Eval("VendorName")%>'/>
                    </ItemTemplate>
                    <InsertItemTemplate>
                        <asp:DropDownList id="insertVendorName" datasourceid="VendorSqlDataSource"
                            datatextfield="VendorName" DataValueField="VendorID" 
                            SelectedValue='<%# Bind("VendorID") %>'
                            OnSelectedIndexChanged="ddlVendor_SelectedIndexChanged" 
                            runat="server" AutoPostBack="true">
                            <asp:ListItem Text="Select" Value="-1"></asp:ListItem>  
                        </asp:DropDownList>

                        <asp:SqlDataSource ID="VendorSqlDataSource"  ConnectionString="<%$Connectionstrings:ConnectionString%>"
                            SelectCommand="SELECT VendorID, VendorName from MDF_Vendor"  runat="server">
                        </asp:SqlDataSource>
                    </InsertItemTemplate>

                    <EditItemTemplate>
                        <asp:DropDownList id="updateVendorName" datasourceid="VendorSqlDataSource"  AutoPostBack="true"
                        datatextfield="VendorName"  DataValueField="VendorID"  
                        SelectedValue='<%# Bind("VendorID") %>'     
                        runat="server" 
                        OnSelectedIndexChanged="ddlVendor_SelectedIndexChanged"  />                       
                        <asp:SqlDataSource ID="VendorSqlDataSource"  ConnectionString="<%$Connectionstrings:ConnectionString%>"
                            SelectCommand="SELECT VendorID, VendorName from MDF_Vendor"  runat="server">
                        </asp:SqlDataSource>
                    </EditItemTemplate>
                </asp:TemplateField>

        </Fields>

        </asp:DetailsView>                   
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ConnectionStrings:ConnectionString %>"
            SelectCommand="SELECT p.*
                        , (SELECT VendorName FROM MDF_Vendor WHERE VendorID = p.VendorID) AS VendorName
                        , (SELECT VendorBUName FROM MDF_VendorBU WHERE VendorBUID = p.VendorBUID) AS VendorBUName
                        FROM dbo.MDF_Proposed p Where p.ProposedID = @ProposedID"
            UpdateCommand="UPDATE [MDF_Proposed] SET [VendorID] = @VendorID
                        , [VendorBUID] = @VendorBUID
                        , [MDFSummary] = @MDFSummary
                        , [MDFAmount] = @MDFAmount
                        , [BeginDate] = @BeginDate
                        , [EndDate] = @EndDate
                        WHERE ProposedID = @ProposedID"
            InsertCommand = "INSERT INTO [MDF_Proposed] ([VendorID], [VendorBUID], [MDFName], [BeginDate], [EndDate], [CreatedBy]) 
                             VALUES (@VendorID, @VendorBUID, @MDFName, @BeginDate, @EndDate, '1234') "
            DeleteCommand = "DELETE  [MDF_Proposed]  WHERE ProposedID = @ProposedID"
        >   
            <SelectParameters>
                    <asp:QueryStringParameter Name="ProposedID" QueryStringField="ProposedID"  runat="server" />
            </SelectParameters>                        
            <UpdateParameters> 
            <asp:Parameter Name="ProposedID" Type="Int32" />
            </UpdateParameters>                    
        </asp:SqlDataSource>
    </div>

<hr align="center" width="96%" size="1" color="darkblue" /> 

<!-- //////////////////// NEED TO HIDE THI TABLE WHERE QueryString Mode=Insert ///////////////////// -->
<table  align="center"  width="96%" id="table2" border="0">
    <tr>
         <td class="center TitleSmall">Notes</td>
     </tr>
    <tr>
        <td width="48%">
    <asp:GridView ID="GridView_Note" runat="server"
    AutoGenerateColumns="False" 
        DataKeyNames="ProposedNoteID"
        DataSourceID="dsProposalNote" 


        ShowFooter="true"
        CssClass="mGrid"
        PagerStyle-CssClass="pgr"
        AlternatingRowStyle-CssClass="alt"                      
    >
    <AlternatingRowStyle ForeColor="Black"  BackColor="#F7F6F3"  VerticalAlign="top" />
    <HeaderStyle BackColor="#B5DAFF" Font-Bold="True" HorizontalAlign="center" />
    <PagerStyle BackColor="Gold" ForeColor="White" HorizontalAlign="Center" />    
    <FooterStyle Font-Bold="True" ForeColor="White"  BackColor="" />
        <Columns>

            <asp:BoundField DataField="ProposedNoteID" HeaderText="ID"  ItemStyle-Width="5%" />
            <asp:TemplateField ItemStyle-Width="70%">
                <ItemTemplate>

                    <asp:Label runat="server" DataField="Note" HeaderText="Note" Text='<%#Eval("Note") %>' />

                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="CreatedBy" HeaderText="Created By"  ItemStyle-Width="13%"/>
            <asp:BoundField DataField="CreatedDate" HeaderText="Created Date"  ItemStyle-Width="12%" DataFormatString="{0:dd/MM/yyyy}"/>

            <asp:TemplateField HeaderText="Delete"> 
                <ItemTemplate> 

                    <asp:LinkButton ID="btnDelete" runat="server" CommandName="Delete" Text="Delete" 

                  OnClientClick="return confirm('Are you certain you want to delete this?');"/> 

                </ItemTemplate> 
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
        <asp:sqldatasource ID="dsProposalNote" runat="server"  ConnectionString="<%$ConnectionStrings:ConnectionString %>"
        SelectCommand="Select * from MDF_ProposedNote where ProposedID = @ProposedID"    
        DeleteCommand="DELETE MDF_ProposedNote where ProposedNoteID = @ProposedNoteID"
            >
        <SelectParameters>
            <asp:QueryStringParameter Name="ProposedID" QueryStringField="ProposedID"  runat="server" />
        </SelectParameters>

    </asp:sqldatasource>

    </td>
        <td></td>
        <td width="48%"></td>
    </tr>
</table>
</form>

私がやりたいことは、QueryString が URL に挿入モードで送信されている場合 (Page1.aspx?mode=insert) です。ページの読み込み時に、DetailsView1 を挿入モードにし、GridView (GridView_Note) とその他の HTML コードを含む Table2 を非表示にします。

これが従来の ASP であれば、Page.asp?mode=insert の条件に基づいて、queryString 値を変数に格納し、表示する前に do および IF ステートメントを使用できると思います。

ASP.NET でこれを達成する方法について何か提案はありますか? 変数を格納し、HTML コードでインラインに挿入するにはどうすればよいですか? 私があなたを混乱させた場合はお知らせください。前もって感謝します。

4

1 に答える 1

0

テーブルを asp:placeholder または asp:panel でラップし、Page_Load イベントで「モード」キーと値のペアの QueryString コレクションをクエリし、それに応じて表示または非表示にすることができます。

HTML

<asp:Panel id="pnlNotes" runat="server">
   ... Table and gridView
</asp:Panel>

コードビハインド

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
         if (Request.QueryString["mode"] != null && Request.QueryString["mode"] == "Insert")
         {
             pnlNotes.Visible = false;
         }
    }
}
于 2012-10-17T18:24:46.263 に答える