我有一個頁面有一個文本框一個按鈕和一個Datagrid。datagrid添加項到數據源失去視圖狀態
這裏的目標很簡單:每次我在TextBox中輸入一些內容並按下按鈕時,它會進行一些檢查,然後將該項添加到數據網格和業務邏輯數據源中。
問題是,如果我想使項目出現在DataGrid中,我必須做一個datagrid.DataSource = myBusinessObject; datagrid.DataBind();問題在於我失去了用戶已經完成的無線電框中的視圖狀態和選擇。
這裏是模板:
<asp:TextBox ID="txtDomain" runat="server" style="margin-bottom: 0px"
Width="254px"></asp:TextBox>
<asp:Button ID="domainAdd" runat="server" onclick="domainAdd_Click"
style="height: 26px" Text="Ajouter" />
<br />
<br />
<asp:DataGrid ID="dg1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundColumn DataField="Name" HeaderText="Nom choisi"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Enregistrer">
<ItemTemplate>
<asp:RadioButton ID="register" runat="server" GroupName="domaine_action" Checked='<%# Bind("IsRegister")%>' Enabled='<%# Bind("CanRegister")%>' />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Transférer">
<ItemTemplate>
<asp:RadioButton ID="transfert" runat="server" GroupName="domaine_action" Checked='<%# Bind("IsTransfert")%>' Enabled='<%# Bind("CanTransfert")%>' />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Gérer moi même">
<ItemTemplate>
<asp:RadioButton ID="manage" runat="server" GroupName="domaine_action" Checked='<%# Bind("IsSelfManaged")%>' Enabled='<%# Bind("CanSelfManage")%>' />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
的背後代碼:
protected void domainAdd_Click(object sender, EventArgs e)
{
if (Session["dic"] != null)
{
var _dic = (List<Test1>)Session["dic"];
_dic.Add(new Test1 { Name = txtDomain.Text });
dg1.DataSource = _dic;
dg1.DataBind();
Session["dic"] = _dic;
}
else
{
List<Test1> _dic = new List<Test1>();
_dic.Add(new Test1 { Name = txtDomain.Text });
dg1.DataSource = _dic;
dg1.DataBind();
Session["dic"] = _dic;
}
對於現在的Test1的對象只是一個小映射類業務邏輯的領域。
public class Test1
{
public string Name { get; set; }
public string IsRegister { get; set; }
public string IsTransfert { get; set; }
public string IsSelfManaged { get; set; }
public string CanRegister { get; set; }
public string CanTransfert { get; set; }
public string CanSelfManage { get; set; }
}
所以我想直接的問題是:如何將項目添加到網格&業務對象沒有鬆動的選項框的選擇在網格中。
其實我試過不做datagrid.Datasource =「something」和datagrid.DataBind();當有回傳...但對象不是以這種方式添加... – Erick 2009-07-17 15:05:22