我必須爲醫生開一張處方藥,藥物自動從數據庫中取出,然後醫生可以寫出藥物的類型,效力和使用頻率。我們可以有一個列表框作爲Gridview中的一個字段,也可以在Gridview中編輯可編輯的字段..?
所以我想檢索類型字段中的Gridview
內的藥品。這可能嗎。
其次,我還希望如果數據庫中沒有藥物,醫生可以編輯Listbox
來添加它。最後,我需要一些可直接編輯的字段,例如Textboxes
,用於效力,頻率和類型。
我必須爲醫生開一張處方藥,藥物自動從數據庫中取出,然後醫生可以寫出藥物的類型,效力和使用頻率。我們可以有一個列表框作爲Gridview中的一個字段,也可以在Gridview中編輯可編輯的字段..?
所以我想檢索類型字段中的Gridview
內的藥品。這可能嗎。
其次,我還希望如果數據庫中沒有藥物,醫生可以編輯Listbox
來添加它。最後,我需要一些可直接編輯的字段,例如Textboxes
,用於效力,頻率和類型。
當然,你可以做到這一點。您只需在GridView中放置一個TextBox
或ListBox
或您選擇的任何控件。你可以用一些值來初始化它們,或者,你可以在其中插入值。
所有你需要的是在GridView中查找這些控件,因爲它是一個數據中繼控件,所以假設你將一個文本框放在GridView中,然後用一個包含5個項目的列表綁定它,然後5個這樣的文本框將被渲染,所以你需要能夠準確地找到你需要的文本框。
下面我給你一個非常簡單的例子。
你的GridView的標記:
<asp:GridView ID="Review_grid" runat="server" AllowPaging="True" PageSize="10"
AutoGenerateColumns="False" onrowdatabound="Review_grid_RowDataBound"
>
<Columns>
<asp:TemplateField HeaderText="ListBox">
<ItemTemplate>
<asp:ListBox ID="lstBox" runat="server"></asp:ListBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="TextBox">
<ItemTemplate>
<asp:TextBox ID="txtBox" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
您的代碼隱藏代碼。
///create datasource for your GridView.
public void BindGrid()
{
DataTable db = new DataTable();
db.Columns.Add("col1");
db.Columns.Add("col2");
db.Columns.Add("col3");
db.Rows.Add("1", "2", "3");
db.Rows.Add("1", "2", "3");
db.Rows.Add("1", "2", "3");
Review_grid.DataSource = db;
Review_grid.DataBind();
}
在RowDataBound
事件GridView
陷阱控制,具有一定的價值進行初始化:
protected void Review_grid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//find ListBox
ListBox lst = (ListBox)e.Row.FindControl("lstBox");
lst.Items.Add(new ListItem("item1"));
lst.Items.Add(new ListItem("item2"));
lst.Items.Add(new ListItem("item3"));
//find textBox
TextBox txt = (TextBox)e.Row.FindControl("txtBox");
txt.Text = "test";
}
}
呼叫BindGrid()
在頁面Page_load
。
您需要了解更多關於GridView和其他dataControls的信息。
非常感謝你的幫助 – 2013-03-07 11:42:39
我們可以添加任何項目到這個創建的列表框中,一旦網站已經運行,我的意思是顯示頁面後?? – 2013-03-08 05:55:35
爲什麼不?當然你可以做到這一點,儘管ListBox沒有這樣的特定事件,但你可以做的是,你可以在GridView內的每個ListBox下面放置一個按鈕。並點擊該按鈕後,您可以顯示一個彈出窗口(一個隱藏的div,它會在點擊時出現)。並且您可以接受新項目的名稱輸入,並且在您提交時,再次遍歷GridView項目和FindControl ListBox項目,並添加項目(從div中的輸入)。並保存它分貝,並重新填充你的GridView – 2013-03-08 06:33:20
[你有什麼嘗試?](http://whathaveyoutried.com) – 2013-03-07 07:07:26