2013-04-26 137 views
0

这里是我的标记:插入从ObjectDataSource控件与业务层对象(无形式)

<div class="postit"> 
    <ul> 
     <li> 
      <asp:Label ID="lblPostBaslik" runat="server" Text="Baslik :" CssClass="postit-label"></asp:Label> 
      <asp:TextBox ID="txtBaslik" runat="server" CssClass="postit-txtbox" ></asp:TextBox> 
     </li> 
     <li> 
      <asp:Label ID="lblPostEtiket" runat="server" Text="Etiket :" CssClass="postit-label"></asp:Label> 
      <asp:TextBox ID="txtEtiket" runat="server" CssClass="postit-txtbox" ></asp:TextBox> 
      <li class="aciklama"> 
       <asp:Label ID="lblAciklama" runat="server" Text="Açiklama :" CssClass="postit-label"></asp:Label> 
       <asp:TextBox ID="txtAciklama" runat="server" CssClass="postit-txtbox-aciklama" TextMode="MultiLine" ></asp:TextBox> 
      </li> 
      <div class="postitbuttons" id="postitbuttons"> 
       <asp:Button ID="btnKaydet" runat="server" Text="Kaydet" CssClass="submit button large" onclick="btnKaydet_Click" /> 
       <asp:Button ID="btnVazgec" runat="server" Text="Vazgeç" CssClass="submit button large"/> 
       <%--<asp:LinkButton ID="btnKaydet" runat="server" CssClass="submit button large" CommandName="Insert">Kaydet</asp:LinkButton> 
       <asp:LinkButton ID="btnKapat" runat="server" CssClass="submit button large" CommandName="Cancel">Vazgeç</asp:LinkButton>--%> 
      </div> 
     </li> 
    </ul> 
</div> 
<asp:ObjectDataSource ID="ods_postit" runat="server" DataObjectTypeName="Post" TypeName="yonet" InsertMethod="PostEkle" > 
    <InsertParameters> 
     <asp:ControlParameter ControlID="txtBaslik" PropertyName="Text" Name="Post_Baslik" Type="String" /> 
     <asp:ControlParameter ControlID="txtEtiket" PropertyName="Text" Name="Post_Etiket" Type="String" /> 
     <asp:ControlParameter ControlID="txtEtiket" PropertyName="Text" Name="Post_Icerik" Type="String" /> 
    </InsertParameters> 
</asp:ObjectDataSource> 

当我点击btnKaydet,我得到以下错误:

"ObjectDataSource 'ods_postit' has no values to insert. Check that the 'values' dictionary contains values."

什么问题?它可以是这样的:

<asp:ObjectDataSource ID="ods_postit" runat="server" DataObjectTypeName="Post" TypeName="yonet" InsertMethod="PostEkle" > 

我试图断点,但它不会触发databaseworks.cs和yonet.cs。

广东话我用这个OOP代码?我不想使用表单(formview等)。

这里是代码隐藏和其它类:

protected void btnKaydet_Click(object sender, EventArgs e) 
{ 
    ods_postit.Insert(); 
} 

Post.cs

public class Post 
{ 
    //Post Private Özellikleri 
    private int _post_id; 
    private Guid _post_user_id; 
    private string _post_baslik; 
    private string _post_etiket; 
    private string _post_icerik; 
    //Post Public Özellikleri 
    public int Post_ID 
    { 
     get { return _post_id; } 
     set { _post_id = value; } 
    } 
    public Guid Post_User_ID 
    { 
     get { return _post_user_id; } 
     set { _post_user_id = value; } 
    } 
    public string Post_Baslik 
    { 
     get { return _post_baslik; } 
     set { _post_baslik = value; } 
    } 
    public string Post_Etiket 
    { 
     get { return _post_etiket; } 
     set { _post_etiket = value; } 
    } 
    public string Post_Icerik 
    { 
     get { return _post_icerik; } 
     set { _post_icerik = value; } 
    } 
} 

databaseworks.cs

public static void PostEkle(Post post) 
{ 
    using (SqlConnection baglanti = new SqlConnection(dbconnect())) 
    { 
     SqlCommand komut = new SqlCommand("sp_post_ekle", baglanti); 
     komut.CommandType = CommandType.StoredProcedure; 
     komut.Parameters.AddWithValue("post_id", post.Post_ID); 
     komut.Parameters.AddWithValue("post_user_id",Membership.GetUser().ProviderUserKey); 
     komut.Parameters.AddWithValue("post_baslik", post.Post_Baslik); 
     komut.Parameters.AddWithValue("post_etiket","#" + post.Post_Etiket); 
     komut.Parameters.AddWithValue("post_icerik", post.Post_Icerik); 
     baglanti.Open(); 
     komut.ExecuteNonQuery(); 
     baglanti.Close(); 
    } 
} 

yonet.cs

public static void PostEkle(Post post) 
{ 
    databaseworks.PostEkle(post); 
} 

回答

1

而在FormView或DetailsView控件处理的UI控件和数据源之间的集成,以及所有与绑定声明的绑定,你没有规范的(我认为,即使您正在使用ControlParameter事项;要么,或控制参数工作,但你需要的FormView控件)。

此外,ODS没有在这里获得什么,你在你的情况;你可以完全转储ObjectDataSource控件,推动在一个对象的数据备份到业务层和数据写入你的命令。

+0

感谢回答@布赖恩像你说的,我不得不使用FormView的,我没有,我现在有大约FormView控件(基本prblm)问题,如果u能帮助我将happy.question [链接](HTTP://计算器。 COM /问题/ 16238456/ASP净窗体视图-使用-对象数据源回发嵌件) – serdar 2013-04-26 14:13:32