Как я могу обновить Gridview с 2 параметрами? - PullRequest
0 голосов
/ 12 января 2012

Я новичок в этом и, возможно, делаю что-то не так.Я пытаюсь получить отфильтрованное представление, используя 2 разных параметра.

Когда я передаю один параметр, мой код работает

           <asp:ListBox ID="ReportListItemsLb" runat="server" DataSourceID="ReportItems" 
    DataTextField="ReportGroupName" DataValueField="ReportGroupId" Height="134px" 
        Width="217px" AutoPostBack="True">
</asp:ListBox>
<asp:SqlDataSource ID="ReportItems" runat="server" 
    ConnectionString="<%$ ConnectionStrings:WeighBridgeDataConnectionString %>" 
    SelectCommand="SELECT ReportGroupName, ReportGroupId FROM MonthlyReports.ReportGroups">
</asp:SqlDataSource>
    <asp:ListBox ID="DateLb" runat="server" AutoPostBack="True" 
        DataSourceID="MainPullBack" DataTextField="Date" DataValueField="Date" 
        Height="106px" Width="218px"></asp:ListBox>
    <asp:SqlDataSource ID="MainPullBack" runat="server" 
        ConnectionString="<%$ ConnectionStrings:WeighBridgeDataConnectionString %>" 
        SelectCommand="SELECT distinct MonthlyReports.ReportWSDOUTData.Date 
        FROM MonthlyReports.ReportWSDOUT INNER JOIN MonthlyReports.ReportWSDOUTData ON 
        MonthlyReports.ReportWSDOUT.WSDOUTId = MonthlyReports.ReportWSDOUTData.WSDOUTId 
        WHERE (MonthlyReports.ReportWSDOUT.ReportGroupId = @reportgroupid) AND (MonthlyReports.ReportWSDOUT.Active = 1)">
        <SelectParameters>
            <asp:ControlParameter ControlID="ReportListItemsLb" Name="reportgroupid" 
                PropertyName="SelectedValue" />
        </SelectParameters>
    </asp:SqlDataSource>
    <asp:GridView ID="AllInOneViewGV" runat="server" AutoGenerateColumns="False" 
        DataSourceID="AllInOneView">
        <Columns>
            <asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
            <asp:BoundField DataField="Waste" HeaderText="Waste" SortExpression="Waste" />
            <asp:BoundField DataField="Source" HeaderText="Source" 
                SortExpression="Source" />
            <asp:BoundField DataField="Destination" HeaderText="Destination" 
                SortExpression="Destination" />
            <asp:BoundField DataField="Data1" HeaderText="Data1" SortExpression="Data1" />
            <asp:BoundField DataField="Data2" HeaderText="Data2" SortExpression="Data2" />
            <asp:BoundField DataField="Data3" HeaderText="Data3" SortExpression="Data3" />
            <asp:BoundField DataField="Data4" HeaderText="Data4" SortExpression="Data4" />
            <asp:BoundField DataField="Data5" HeaderText="Data5" SortExpression="Data5" />
            <asp:BoundField DataField="WSDOUTId" HeaderText="WSDOUTId" 
                SortExpression="WSDOUTId" />
            <asp:BoundField DataField="ReportGroupId" HeaderText="ReportGroupId" 
                SortExpression="ReportGroupId" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="AllInOneView" runat="server" 
        ConnectionString="<%$ ConnectionStrings:WeighBridgeDataConnectionString %>" 
        SelectCommand="SELECT  MonthlyReports.ReportWSDOUTData.Date, MonthlyReports.ReportWSDOUT.Waste,
         MonthlyReports.ReportWSDOUT.Source, MonthlyReports.ReportWSDOUT.Destination, MonthlyReports.ReportWSDOUTData.Data1,
          MonthlyReports.ReportWSDOUTData.Data2, MonthlyReports.ReportWSDOUTData.Data3, MonthlyReports.ReportWSDOUTData.Data4,
           MonthlyReports.ReportWSDOUTData.Data5, MonthlyReports.ReportWSDOUTData.WSDOUTId, MonthlyReports.ReportWSDOUT.ReportGroupId 
           FROM MonthlyReports.ReportWSDOUT INNER JOIN MonthlyReports.ReportWSDOUTData ON
            MonthlyReports.ReportWSDOUT.WSDOUTId = MonthlyReports.ReportWSDOUTData.WSDOUTId 
            WHERE (MonthlyReports.ReportWSDOUT.ReportGroupId = @reportgroupid) AND (MonthlyReports.ReportWSDOUT.Active = 1) ">
        <SelectParameters>
            <asp:ControlParameter ControlID="ReportListItemsLb" Name="reportgroupid" 
                PropertyName="SelectedValue" />
        </SelectParameters>
    </asp:SqlDataSource>
</asp:Content>

Но когда я добавляю второй параметр для фильтрации по дате, ничегослучается

    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:ListBox ID="ReportListItemsLb" runat="server" DataSourceID="ReportItems" 
    DataTextField="ReportGroupName" DataValueField="ReportGroupId" Height="134px" 
        Width="217px" AutoPostBack="True">
</asp:ListBox>
<asp:SqlDataSource ID="ReportItems" runat="server" 
    ConnectionString="<%$ ConnectionStrings:WeighBridgeDataConnectionString %>" 
    SelectCommand="SELECT ReportGroupName, ReportGroupId FROM MonthlyReports.ReportGroups">
</asp:SqlDataSource>
    <asp:ListBox ID="DateLb" runat="server" AutoPostBack="True" 
        DataSourceID="MainPullBack" DataTextField="Date" DataValueField="Date" 
        Height="106px" Width="218px"></asp:ListBox>
    <asp:SqlDataSource ID="MainPullBack" runat="server" 
        ConnectionString="<%$ ConnectionStrings:WeighBridgeDataConnectionString %>" 
        SelectCommand="SELECT distinct MonthlyReports.ReportWSDOUTData.Date 
        FROM MonthlyReports.ReportWSDOUT INNER JOIN MonthlyReports.ReportWSDOUTData ON 
        MonthlyReports.ReportWSDOUT.WSDOUTId = MonthlyReports.ReportWSDOUTData.WSDOUTId 
        WHERE (MonthlyReports.ReportWSDOUT.ReportGroupId = @reportgroupid) AND (MonthlyReports.ReportWSDOUT.Active = 1)">
        <SelectParameters>
            <asp:ControlParameter ControlID="ReportListItemsLb" Name="reportgroupid" 
                PropertyName="SelectedValue" />
        </SelectParameters>
    </asp:SqlDataSource>
    <asp:GridView ID="AllInOneViewGV" runat="server" AutoGenerateColumns="False" 
        DataSourceID="AllInOneView">
        <Columns>
            <asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
            <asp:BoundField DataField="Waste" HeaderText="Waste" SortExpression="Waste" />
            <asp:BoundField DataField="Source" HeaderText="Source" 
                SortExpression="Source" />
            <asp:BoundField DataField="Destination" HeaderText="Destination" 
                SortExpression="Destination" />
            <asp:BoundField DataField="Data1" HeaderText="Data1" SortExpression="Data1" />
            <asp:BoundField DataField="Data2" HeaderText="Data2" SortExpression="Data2" />
            <asp:BoundField DataField="Data3" HeaderText="Data3" SortExpression="Data3" />
            <asp:BoundField DataField="Data4" HeaderText="Data4" SortExpression="Data4" />
            <asp:BoundField DataField="Data5" HeaderText="Data5" SortExpression="Data5" />
            <asp:BoundField DataField="WSDOUTId" HeaderText="WSDOUTId" 
                SortExpression="WSDOUTId" />
            <asp:BoundField DataField="ReportGroupId" HeaderText="ReportGroupId" 
                SortExpression="ReportGroupId" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="AllInOneView" runat="server" 
        ConnectionString="<%$ ConnectionStrings:WeighBridgeDataConnectionString %>" 

        SelectCommand="SELECT  MonthlyReports.ReportWSDOUTData.Date, MonthlyReports.ReportWSDOUT.Waste,
         MonthlyReports.ReportWSDOUT.Source, MonthlyReports.ReportWSDOUT.Destination, MonthlyReports.ReportWSDOUTData.Data1,
          MonthlyReports.ReportWSDOUTData.Data2, MonthlyReports.ReportWSDOUTData.Data3, MonthlyReports.ReportWSDOUTData.Data4,
           MonthlyReports.ReportWSDOUTData.Data5, MonthlyReports.ReportWSDOUTData.WSDOUTId, MonthlyReports.ReportWSDOUT.ReportGroupId 
           FROM MonthlyReports.ReportWSDOUT INNER JOIN MonthlyReports.ReportWSDOUTData ON
            MonthlyReports.ReportWSDOUT.WSDOUTId = MonthlyReports.ReportWSDOUTData.WSDOUTId 
            WHERE (MonthlyReports.ReportWSDOUT.ReportGroupId = @reportgroupid) AND (MonthlyReports.ReportWSDOUT.Active = 1) and MonthlyReports.ReportWSDOUTData.date=@date">
        <SelectParameters>
            <asp:ControlParameter ControlID="ReportListItemsLb" Name="reportgroupid" 
                PropertyName="SelectedValue" />
            <asp:ControlParameter ControlID="DateLb" Name="date" 
                PropertyName="SelectedValue" />
        </SelectParameters>
    </asp:SqlDataSource>
</asp:Content>

Кто-нибудь может указать, где я иду не так, и помочь мне найти способ сделать это?

Спасибо,

Майк

Ответы [ 2 ]

0 голосов
/ 13 января 2012

Попробуйте это.

1. Создайте метод, который вернет значение db null, если параметр не передан в хранимой процедуре

public static object GetDataValue(object o)
{
    if (o == null || String.Empty.Equals(o))
        return DBNull.Value;
    else
        return o;
}

2. Создайте метод, который будет вызыватьхранимой процедуры и заполните набор данных.

public DataSet GetFillGvds(string param_1, string param_2) {

try
{
    DataSet oDS = new DataSet();
    SqlParameter[] oParam = new SqlParameter[2];


    oParam[0] = new SqlParameter("@Param1", GetDataValue(param_1));
    oParam[1] = new SqlParameter("@Param1", GetDataValue(param_2));

    oDS = SqlHelper.ExecuteDataset(DataConnectionString, CommandType.StoredProcedure, "spTest", oParam);
    return oDS;
}
catch (Exception e)
{
    ErrorMessage = e.Message;
    return null;
}
}

Создайте набор данных для привязки данных в виде сетки.Например,

DataSet FillGvds = new DataSet();
param1FillGvds = "param1";
param2FillGvds = "";
FillGvds = GetFillGvds();// Assuming you have created the method to fill the dataset.
if(FillGvds != null)
{
 if(FillGvds.Tables[0].Rows.Count > 0)
 {
  GridView1.Datasource = FillGvds;
  GridView1.DataBind();
  label1.Text = Convert.ToString(FillGvds.Tables[0].Rows.Count);
 }
}


In order to pass the db null you query should be like this.
SELECT *(whatever you want) 
FROM YourTableName
WHERE colName1 = COALESCE(@colName1, colName1) AND
colName2 = COALESCE(@colName2,colName2)
0 голосов
/ 12 января 2012

просто добавьте тип параметра в aspx:

<asp:Parameter ControlID="ReportListItemsLb" Name="reportgroupid" PropertyName="SelectedValue" type="DateTime"></asp:Parameter>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...