基本上我想要我的对象回来
我有一个电子邮件对象.
public class Email{
public string emailAddress;
public bool primary;
public int contactPoint;
public int databasePrimaryKey;
public Email(){}
}
在我的用户控件中,我列出了一个电子邮件对象.
public List<Email> EmailCollection;
而且我将其绑定到我的usercontrol中的GridView.
if(this.EmailCollection.Count > 0){
this.GridView1.DataSource = EmailCollection;
this.GridView1.DataBind();
}
这将是真的很棒,如果我可以得到一个电子邮件对象后退出GridView.
我该怎么做?
我也只绑定一些电子邮件对象的属性到GridView,它们被放入项目模板.
<Columns>
<asp:TemplateField HeaderText="Email Address">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text=<%# Eval("EmailAddress") %> Width=250px />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Primary">
<ItemTemplate>
<asp:CheckBox runat="server" Checked=<%# Eval("PrimaryEmail") %> />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Contact Point">
<ItemTemplate>
<CRM:QualDropDown runat="server" Type=ContactPoint InitialValue=<%# Eval("ContactPoint") %> />
</ItemTemplate>
</asp:TemplateField>
</Columns>
GridView甚至可以做到这一点吗?我需要滚我自己的东西吗?如果它会为我做,这真的很酷
详细说明
我将List集合保存到viewstate中.
我最终想要得到的是,控件中有一个Save按钮,当事件触发时,我想从GridView中的一个数据行创建一个Email对象,以便与我的原始List集合进行比较.那么如果有变化,那么我会更新数据库中的那一行.我在想,如果我可以把一个List集合到一个GridView,那么也许我可以把它重新出来.
也许我为我的电子邮件对象创建一个新的构造函数,它需要一个DataRow?但是,然后有很多复杂性进入…
解决方法
ASP.NET数据绑定是对象操纵方面的单向操作.但是,DataSource属性将在整个响应中包含对您的EmailCollection的引用:
EmailCollection col = (EmailCollection)this.GridView1.DataSource;
但我有一种感觉,你真正想要的是一个控件,它可以根据用户输入来操作你的EmailCollection,并在下一个请求中检索它.即使是Webforms也不能将这种状态伪造出来.
