トップ回答者
ASP.NET 4.0(C#)で、dataobjectから、引数を用いてデータを取得したい

質問
-
グリッドビューにデータオブジェクトからデータを流し込もうとサンプルを作ってみたのですが、
データの取得条件を、引数に追加したいのですが、方法がわかりませんでした実際のデータを作成する際は、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 クライアント開発 から
回答
-
適切なフォーラムへの移動は管理者の方にお願いするとして・・・
ObjectDataSource に SelectParameters を定義するのが普通のやり方です。ObjectDataSource.SelectParameters プロパティ
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.objectdatasource.selectparameters(v=vs.100).aspx上記のサンプルコードではクエリ文字列からパラメータを渡すことを前提に書かれていますが、他にもいろいろな方法で渡すことが可能です。
やり方がわからなければ、何からどのようにパラメータを渡すのかもう少し詳しく書いてください。
すべての返信
-
適切なフォーラムへの移動は管理者の方にお願いするとして・・・
ObjectDataSource に SelectParameters を定義するのが普通のやり方です。ObjectDataSource.SelectParameters プロパティ
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.objectdatasource.selectparameters(v=vs.100).aspx上記のサンプルコードではクエリ文字列からパラメータを渡すことを前提に書かれていますが、他にもいろいろな方法で渡すことが可能です。
やり方がわからなければ、何からどのようにパラメータを渡すのかもう少し詳しく書いてください。