我有ListView
填充了从MySql数据库加载的DataSet
的数据。 ListView
显示了一个文本模块列表,以便稍后创建一个文件文件。以下是ListView
定义:
<asp:ListView ID="addTextModuleList" runat="server" OnItemCommand="addTextModuleList_OnItemCommand" DataKeyNames="ID" >
<ItemTemplate>
<asp:LinkButton ID="addTextModuleButton" runat="server" CssClass="insertTextModuleButtonFade" CommandName="insertTextModule"></asp:LinkButton>
<div id="listViewId" runat="server" style="float:left; width:24px; height:16px; margin:2px 15px 5px 0px; text-align:right;"><%# Eval("ID") %></div>
<div style="float:left; width:200px; height:25px; margin:2px 10px 5px 0px; text-align:left; font-weight:bold;"><%# Eval("shortName") %>:</div>
<div style="float:left; width:700px; margin:5px;"><%# Eval("fullName") %></div>
<div class="clear"></div>
</ItemTemplate>
</asp:ListView>
我想通过单击图标将textModules添加到确认中。那是我的问题。图标必须以不同的颜色显示,具体取决于是否已添加文本模块。该图标作为asp:Linkbutton
加载,我有一个用于绿色图标的CSS类和另一个用于褪色灰色的相同图标的CSS类。
我可以通过点击更改图标的CssClass
,但在加载CssClass
或Page
时我不知道如何更改图标的ListView
。有什么想法吗?
以下是DataSet
的代码隐藏:
protected void executeTemplateSelection()
{
// connect to database
MySqlConnection con = new MySqlConnection();
con.ConnectionString = Helper.CONNECTION_STRING;
MySqlCommand cmd = null;
// load customer textModules
con.Open();
cmd = new MySqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM textmodule WHERE ID IN " + Session["loadTextModuleTemplates"].ToString();
MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
addTextModuleList.DataSource = ds;
addTextModuleList.DataBind();
con.Close();
cmd = new MySqlCommand();
con.Open();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM linktextmodule WHERE confirmationId = " + Session["currentConfirmationId"].ToString();
MySqlDataReader mdr = cmd.ExecuteReader();
ds.Tables[0].Columns.Add("alreadyAdded");
while (mdr.Read())
{
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
if (mdr["textModule"].Equals(ds.Tables[0].Rows[i]["ID"]))
{
ds.Tables[0].Rows[i]["alreadyAdded"] = "yes";
}
}
}
}
答案 0 :(得分:2)
您可以实现ListView.ItemDataBound事件(请参阅http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.itemdatabound%28v=vs.100%29.aspx),这将允许您在绑定时更改每个项目的控件的属性。我之前使用过这种方法。
您也可以尝试直接在CssClass属性中使用数据绑定语法(&lt;%#%&gt;),但我不确定它是否在CssClass属性内部工作,就像在其他一些属性中一样。你已经在div中做了这个,但是看看例如http://support.microsoft.com/kb/307860,他们在一个属性中给出了一个例子。