1

挿入パラメーターを返す DetailView があります。

<InsertParameters>
            <asp:Parameter Name="Name" Type="String" />
            <asp:Parameter Name="Capital" Type="String" />
            <asp:Parameter Name="Currency" Type="String" />
            <asp:Parameter Name="ISOCode" Type="String" />
</InsertParameters>

メソッドへ:

public void AddCountry(string Name, string Capital, string Currency, string ISOCode)
        {
           CountyList.Add(new Country(Name, Capital, Currency, ISOCode)));
        }

しかし、DetailsView にカスタム クラスを返すように強制する方法は?

public void AddCountry(Country country)
        {
            CountyList.Add(country);
        }
4

2 に答える 2

1

プロパティを使用してクラスを返すように強制します:TypeNameおよびDataObjectTypeNameof ObjectDataSource。挿入パラメータを指定する必要はありません。

App_Codeさまざまなフィールドをパブリックにアクセス可能として宣言するクラスをフォルダーに作成します。例えば:

Country.csフィールドを宣言するクラスファイル

public class Country
{
public Country()
{

}
private string name;
public string Name
{
    get { return name; }
    set { name= value; }
}

private string capital;
public string Capital
{
    get { return capital; }
    set { capital= value; }
}

private string currency;
public string Currency
{
    get { return currency; }
    set { currency= value; }
}

private string iSOCode;
public string ISOCode
{
    get { return iSOCode; }
    set { iSOCode= value; }
}      
}

Insert Method:AddCountry()で、上記のクラスのインスタンスを以下のように渡すだけです。以下に示すように、フィールド値にアクセスし Class_variable_Name.Public_Field_Nameます。

public void AddCountry(Country country)
    {
// a sample code to access the values from Class instance passed in this method
    string connString = WebConfigurationManager.ConnectionStrings["MyConnections"].ConnectionString;
    SqlConnection con = new SqlConnection(connString);
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = "Insert into Country(Name, Capital,Currency,ISOCode)  
                       values(@Name,@Capital,@Currency,@ISOCode)";
    cmd.Connection = con;

   // Add the insert parameters
    cmd.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar, 20));

   // specify the values for insert parameters
   // using the Country class passed as parameter to this method 
    cmd.Parameters["@Name"].Value = country.Name; // country.Public_Field_Name

    cmd.Parameters.Add(new SqlParameter("@Capital", SqlDbType.NVarChar, 20));
    cmd.Parameters["@Capital"].Value = country.Capital;
    cmd.Parameters.Add(new SqlParameter("@Currency", SqlDbType.NVarChar, 20));
    cmd.Parameters["@Currency"].Value = country.Currency;
    cmd.Parameters.Add(new SqlParameter("@ISOCode", SqlDbType.NVarChar, 20));
    cmd.Parameters["@ISOCode"].Value = country.ISOCode;

    con.Open();
    // execute the Insert Command
      cmd.ExecuteNonQuery();    
  }

明らかに、ObjectDataSourceコントロールでは、プロパティを指定する必要があります: TypeNameDataObjectTypeName.

1.)TypeNameデータ アクセス メソッドを含むクラスの名前を示します。これは、メソッドを含むクラス ファイルを意味します。AddCountry()

2.) : データ バインド コントロールから個々の値を渡す代わりに、コントロールが、、またはデータ操作のパラメーターに使用DataObjectTypeNameするクラスの名前を取得または設定します。この場合、これは上記で作成されたクラスです。ObjectDataSourceupdateinsertdeleteCountry

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
   DataObjectTypeName="Country"
   InsertMethod="AddCountry"
   TypeName="CountryAccessMethods" <!-- assuming you have defined your Insert,
  Update,Delete methods inside a class file named `CountryAccessMethods` -->
</asp:ObjectDataSource> 
于 2013-09-25T12:41:08.457 に答える