1

既存の SQL データベースと ASP.NET アプリケーションがあります。私のアプリケーションには、2 つの既存GridViewsのログイン機能があります。SQL データベースから領収書を自動的に作成するように設計された既存の Crystal Report もあります。これは、ユーザーが 3 つの特定のパラメーターを入力することによって行われ、残りのデータ (これらのパラメーターと並行している) は Crystal レポートに自動的に入力されます。

GridViewCrystal Report に 3 つのパラメータを自動的に入力する印刷ボタンを作成したいと考えています。これは、私のアプリケーションをより使いやすくするための試みです。つまり、ユーザーが の新しい列で印刷ボタンを押すGridViewと、3 つのパラメータが自動的に取得され、Crystal Report に入力されます。

私のパラメータは、「EmpID」、「KeyControl」、および「ControlNumber」です。Crystal レポートのラベルは「x.rpt」です

ここに私のGridViewマークアップがあります:

<asp:GridView ID="gridKeyAndBuildingInformation" runat="server"  CssClass="style3" 
              AllowSorting ="True" 
              AutoGenerateColumns ="False" 
              AllowPaging="True"
              DataKeyNames="KeyRefId"
              OnRowCancelingEdit="gridKeyAndBuildingInformation_RowCancelingEdit" 
              onPageIndexChanging="gridKeyAndBuildingInformation_PageIndexChanging"
              OnRowDataBound="gridKeyAndBuildingInformation_RowDataBound"
              OnRowEditing="gridKeyAndBuildingInformation_RowEditing" 
              OnRowUpdating="gridKeyAndBuildingInformation_RowUpdating" 
              OnRowCommand="gridKeyAndBuildingInformation_RowCommand" 
              ShowFooter="True"
              OnRowDeleting="gridKeyAndBuildingInformation_RowDeleting"                                    
              AlternatingRowStyle-BackColor="#EFEFEF" 
              EditRowStyle-VerticalAlign="Top" 
              HeaderStyle-BackColor="#77b218"
              OnSorting="gridKeyAndBuildingInformation_Sorting" 
              BackColor="#CCCCCC" 
              BorderColor="#999999" 
              BorderStyle="Solid" 
              BorderWidth="3px" 
              CellPadding="4" 
              EnableModelValidation="True" 
              ForeColor="Black" 
              CellSpacing="2">
<Columns>

<asp:TemplateField HeaderText ="EmpID" HeaderStyle-CssClass="HeaderText" sortexpression="EmpID">
    <ItemTemplate>                     
    <asp:Label ID="lblEmpID" runat="server" Text='<%# Eval("EmpID") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate> 
    <asp:TextBox ID="txtEmpID" runat="server" Text='<%# Eval("EmpID") %>' Width="50px"></asp:TextBox> 
</EditItemTemplate> 
<FooterTemplate> 
    <asp:TextBox ID="txtNewEmpID" runat="server"  Width="50px"></asp:TextBox> 
</FooterTemplate> 
<HeaderStyle CssClass="HeaderText" />
</asp:TemplateField>

<asp:TemplateField HeaderText ="ControlNumber" HeaderStyle-CssClass="HeaderText" sortexpression="ControlNumber">
<ItemTemplate>                     
    <asp:Label ID="lblControlNumber" runat="server" Text='<%# Eval("ControlNumber") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate> 
    <asp:TextBox ID="txtControlNumber" runat="server" Text='<%# Eval("ControlNumber") %>' Width="50px"></asp:TextBox> 
</EditItemTemplate> 
<FooterTemplate> 
    <asp:TextBox ID="txtNewControlNumber" runat="server"  Width="50px"></asp:TextBox> 
</FooterTemplate> 
<HeaderStyle CssClass="HeaderText" />
</asp:TemplateField> 

<asp:TemplateField HeaderText ="KeyNumber" HeaderStyle-CssClass="HeaderText" sortexpression="KeyNumber">
<ItemTemplate>                     
    <asp:Label ID="lblKeyNumber" runat="server" Text='<%# Eval("KeyNumber") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate> 
    <asp:TextBox ID="txtKeyNumber" runat="server" Text='<%# Eval("KeyNumber") %>' Width="50px"></asp:TextBox> 
</EditItemTemplate> 
<FooterTemplate> 
    <asp:TextBox ID="txtNewKeyNumber" runat="server"  Width="50px"></asp:TextBox> 
</FooterTemplate> 
<HeaderStyle CssClass="HeaderText" />
</asp:TemplateField> 

<asp:TemplateField HeaderText="Edit" ShowHeader="False">
<EditItemTemplate>
    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update" Text="Update"></asp:LinkButton> 
    <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkButton> 
</EditItemTemplate> 
<FooterTemplate>
    <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="AddNew" Text="Add New"></asp:LinkButton> 
</FooterTemplate> 
<ItemTemplate> 
    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit"></asp:LinkButton> 
</ItemTemplate> 
</asp:TemplateField> 

<asp:CommandField HeaderText="Delete" ShowDeleteButton="True" ShowHeader="True" /> 
<asp:ButtonField HeaderText="Print" ShowHeader="True" Text="Print" />

</Columns>

<EditRowStyle VerticalAlign="Top"></EditRowStyle>
<FooterStyle BackColor="#CCCCCC" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White"></HeaderStyle>
<PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" />
<RowStyle BackColor="White" />
<SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
</asp:GridView>
4

1 に答える 1

1

RowCommand列の削除ボタンをクリックすると発生するイベントを処理できButtonFieldます。GridViewこれを宣言マークアップの最後 (" " の後CellSpacing="2"、" " の前>)に追加します。

OnRowCommand="gridKeyAndBuildingInformation_RowCommand"

そして、背後にあるコードでは、次のようなものが必要になります (これは C# です。VB.NET が必要な場合はお知らせください - この質問はサーバー側言語でタグ付けされていません):

protected void gridKeyAndBuildingInformation_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    // Get your ID for the row you're on
    int ID = Convert.ToInt32(e.CommandArgument);

    // Get the row the button was clicked in
    GridViewRow row = gridKeyAndBuildingInformation.Rows[ID];

    // Get the values you need from that row
    int EmpID = row.Cells[0];
    int ControlNumber = row.Cells[1];
    int KeyNumber = row.Cells[2]; 

    // Use those numbers to make your call to the Crystal Report
    // I don't know what this part would look like.
}

MSDN で RowCommand イベントの詳細を読むことができます: GridView.RowCommand イベント

于 2012-08-15T13:09:45.857 に答える