none
ASP.NET 4.0(C#)で、dataobjectから、引数を用いてデータを取得したい RRS feed

  • 質問

  • グリッドビューにデータオブジェクトからデータを流し込もうとサンプルを作ってみたのですが、
    データの取得条件を、引数に追加したいのですが、方法がわかりませんでした

    実際のデータを作成する際は、SQLに与えるパラメータが、条件として必要かと思うのですが
    そのような場合、別のメソッドなどでパラメータ条件を指定するのでしょうか

    フォーム
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="TestProj.WebForm3" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
       
         <asp:GridView ID="GridView1" runat="server" AllowSorting="True"
       DataSourceID="ObjectDataSource2">
      </asp:GridView>
      <asp:ObjectDataSource ID="ObjectDataSource2" runat="server"
       OldValuesParameterFormatString="original_{0}" SelectMethod="GetData"
       TypeName="TestProj.dataobject.Class1"></asp:ObjectDataSource>
      <asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
       OldValuesParameterFormatString="original_{0}" SelectMethod="GetTestData"
       TypeName="TestProj.dataobject.Class1"></asp:ObjectDataSource>
       
        </div>
        </form>
    </body>
    </html>


    データオブジェクト
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel;
    using System.Data;


    namespace TestProj.dataobject
    {
     public class testdata
     {
      public DateTime dt{get;set;}
      public string paramA { get; set; }
      public string paramB { get; set; }
      public string paramC { get; set; }
     }
      
     /// <summary>
     /// データオブジェクトの練習
     /// </summary>
     /// <remarks>[DataObject(true)]とすると、データ専用クラスとなる</remarks>
     [DataObject(true)]
     public class Class1
     {
      [DataObjectMethod(DataObjectMethodType.Select)]
      public List<testdata> GetTestData()
      {
       List<testdata> testList = new List<testdata>();

       for (int i = 0; i < 10; i++) {
        testdata t = new testdata();
        t.dt = DateTime.Now.AddMinutes(i);
        t.paramA = "パラメータA" + i.ToString("00");
        t.paramB = "パラメータB" + i.ToString();
        testList.Add(t);
       }

       return testList;
      }

      [DataObjectMethod(DataObjectMethodType.Select)]
      //public DataSet GetData(int j) ★ここをパラメータで変化させたい
      public DataSet GetData()
      {
       DataSet dt = new DataSet();
       List<testdata> testList = new List<testdata>();

       dt.Tables.Add("test");
       dt.Tables[0].Columns.Add("日付");
       dt.Tables[0].Columns.Add("パラメータA");
       dt.Tables[0].Columns.Add("パラメータB");
       dt.Tables[0].Columns.Add("パラメータC");
          
       for (int i = 0; i < 10; i++) {
        testdata t = new testdata();
        t.dt = DateTime.Now.AddMinutes(i);
        t.paramA = "パラメータA" + i.ToString("00") + " ";// +j.ToString();★ここをパラメータで変化させたい
        t.paramB = "パラメータB" + i.ToString();
        t.paramC = "パラメータC" + (i + 199).ToString();

        var dTmp=dt.Tables[0].NewRow();
        dTmp[0] = t.dt;
        dTmp[1] = t.paramA;
        dTmp[2] = t.paramB;
        dTmp[3] = t.paramC;
        dt.Tables[0].Rows.Add(dTmp);
       }

       return dt;
      }
     }
    }

    • 移動 星 睦美 2013年9月25日 0:52 Windows クライアント開発 から
    2013年9月20日 7:38

回答

すべての返信

  • 質問タイトルに「ASP.NET」や「C#」の文字を含めるくらいなら、ASP.NETフォーラムやC#フォーラムを選択すべきではないでしょうか。
    2013年9月20日 7:46
  • 適切なフォーラムへの移動は管理者の方にお願いするとして・・・


    ObjectDataSource に SelectParameters を定義するのが普通のやり方です。

    ObjectDataSource.SelectParameters プロパティ
    http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.objectdatasource.selectparameters(v=vs.100).aspx

    上記のサンプルコードではクエリ文字列からパラメータを渡すことを前提に書かれていますが、他にもいろいろな方法で渡すことが可能です。

    やり方がわからなければ、何からどのようにパラメータを渡すのかもう少し詳しく書いてください。

    • 回答の候補に設定 星 睦美 2013年9月25日 0:42
    • 回答としてマーク 星 睦美 2013年9月27日 2:39
    2013年9月20日 9:18
  • ステファンタラリコ さん、こんにちは
    フォーラム オペレーターの星 睦美です。

    質問内容から私のほうでスレッドをASP.NET フォーラムに移動しました。
    SuferOnWww さんの返信が今回の質問に参考になりそうだと思いますので、私からを[回答の候補に設定] しています。

    回答がステファンタラリコ さんの質問のお役にたちましたら、後からも参考になるように投稿者からの[回答としてマーク]をお願いします。


    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2013年9月25日 0:52