C# 如何在此ListView中插入用于插入其他内容的图像?
我是一个新的ASP.NET开发人员,我必须创建一个测验引擎应用程序。我使用列表视图插入特定测验下的问题 我有以下数据库设计:C# 如何在此ListView中插入用于插入其他内容的图像?,c#,asp.net,image,listview,C#,Asp.net,Image,Listview,我是一个新的ASP.NET开发人员,我必须创建一个测验引擎应用程序。我使用列表视图插入特定测验下的问题 我有以下数据库设计: QuizContent Table: ID, QuizID, QuestionID, AnswerID Quiz Table: QuizID, Title, Description Question Table: QuestionID, Question, QuestionOrder, AnswerExplanation Answers Table: AnswerID,
QuizContent Table: ID, QuizID, QuestionID, AnswerID
Quiz Table: QuizID, Title, Description
Question Table: QuestionID, Question, QuestionOrder, AnswerExplanation
Answers Table: AnswerID, Answer
QuestionImage: ID, QuestionID, URL
我现在想要的是使管理员能够嵌入一个图像到这些问题的任何一个既然数据库中有两个不同的表,我该怎么做?一个用于上述设计中所示的问题,一个用于图像。我有此设计,因为并非所有问题都有图像。除此之外,我可能有两个或三个以上的问题有相同的形象
我知道我不应该发布太多的代码或信息,但我必须这样做以明确:
<div align="center">
<asp:ListView ID="ListView2" runat="server" DataSourceID="SqlDataSource2"
DataKeyNames="QuestionID" InsertItemPosition="LastItem" OnSelectedIndexChanged="ListView2_SelectedIndexChanged">
<EditItemTemplate>
<tr style="">
<td>
<asp:ImageButton ID="UpdateButton" ImageUrl="Images/icons/update24.png" ToolTip="Update" runat="server" CommandName="Update" />
<asp:ImageButton ID="CancelButton" ImageUrl="Images/icons/cancel324.png" ToolTip="Cancel" runat="server" CommandName="Cancel" />
</td>
<td>
<asp:TextBox ID="QuestionTextBox" runat="server"
Text='<%# Bind("Question") %>' />
</td>
<td>
<asp:TextBox ID="QuestionOrderTextBox" runat="server"
Text='<%# Bind("QuestionOrder") %>' />
</td>
<td>
<asp:TextBox ID="AnswerExplanationTextBox" runat="server"
Text='<%# Bind("AnswerExplanation") %>' />
</td>
<%--<td>
<asp:TextBox ID="UrlTextBox" runat="server" Text='<%# Bind("Url") %>' />
</td>--%>
</tr>
</EditItemTemplate>
<EmptyDataTemplate>
<table id="Table1" runat="server"
style="">
<tr>
<td>
No data was returned.</td>
</tr>
</table>
</EmptyDataTemplate>
<InsertItemTemplate>
<tr style="">
<td>
<asp:ImageButton ID="InsertButton" ImageUrl="Images/icons/add24.png" ToolTip="Add" runat="server" CommandName="Insert" />
<asp:ImageButton ID="CancelButton" ImageUrl="Images/icons/clear24.png" ToolTip="Cancel" runat="server" CommandName="Cancel" />
</td>
<td>
<asp:TextBox ID="QuestionTextBox" runat="server"
Text='<%# Bind("Question") %>' />
</td>
<td>
<asp:TextBox ID="QuestionOrderTextBox" runat="server"
Text='<%# Bind("QuestionOrder") %>'/>
</td>
<td>
<asp:TextBox ID="AnswerExplanationTextBox" runat="server"
Text='<%# Bind("AnswerExplanation") %>' />
</td>
<%--<td>
<asp:FileUpload ID="ImageIDUploader" runat="server" size="10" />
</td>--%>
</tr>
</InsertItemTemplate>
<ItemTemplate>
<tr style="">
<td>
<asp:ImageButton ID="DeleteButton" ImageUrl="Images/icons/delete24.png" ToolTip="delete" runat="server" CommandName="Delete" />
<asp:ImageButton ID="EditButton" ImageUrl="Images/icons/edit24.png" ToolTip="Edit" runat="server" CommandName="Edit" />
<asp:ImageButton ID="SelectButton" ImageUrl="Images/icons/select.png" ToolTip="Select" runat="server" CommandName="Select" />
</td>
<td>
<asp:Label ID="QuestionLabel" runat="server" Text='<%# Eval("Question") %>' />
</td>
<td>
<asp:Label ID="QuestionOrderLabel" runat="server"
Text='<%# Eval("QuestionOrder") %>' />
</td>
<td>
<asp:Label ID="AnswerExplanationLabel" runat="server"
Text='<%# Eval("AnswerExplanation") %>' />
</td>
<%--<td>
<a href='<%# Eval("URL") %>' target="_blank">
<asp:Label ID="ImageURLlbl" runat="server" Text='<%# Eval("URL") %>' />
</a>
</td>--%>
</tr>
</ItemTemplate>
<LayoutTemplate>
<div ><table id="thetable" width="97%" cellpadding="0px" cellspacing="0px" style="margin:0px 0px 0px 0px; border:2px solid #003366; font-size:13px; font-weight:bold;">
<thead>
<tr style="background-color:#C6D7B5;">
<th style="border-bottom:2px solid #003366; ">...</th>
<th style="border-bottom:2px solid #003366; ">Question</th>
<th style="border-bottom:2px solid #003366; ">Question Order</th>
<th style="border-bottom:2px solid #003366; ">Answer Explanation</th>
<th style="border-bottom:2px solid #003366; ">Image (URL)</th>
</tr>
</thead>
<tbody><tr id="itemPlaceholder" runat="server"></tr></tbody>
</table></div>
</LayoutTemplate>
<SelectedItemTemplate>
<tr style="">
<td>
<asp:ImageButton ID="DeleteButton" ImageUrl="Images/icons/delete24.png" ToolTip="Delete" runat="server" CommandName="Delete" />
<asp:ImageButton ID="EditButton" ImageUrl="Images/icons/edit24.png" ToolTip="Edit" runat="server" CommandName="Edit" />
</td>
<td>
<asp:Label ID="QuestionLabel" runat="server" Text='<%# Eval("Question") %>' />
</td>
<td>
<asp:Label ID="QuestionOrderLabel" runat="server"
Text='<%# Eval("QuestionOrder") %>' />
</td>
<td>
<asp:Label ID="AnswerExplanationLabel" runat="server"
Text='<%# Eval("AnswerExplanation") %>' />
</td>
<%--<td>
<asp:Label ID="ImageURLlbl" runat="server"
Text='<%# Eval("URL") %>' />
</td>--%>
</tr>
</SelectedItemTemplate>
</asp:ListView>
</div>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:QuizSysDBConnectionString %>"
SelectCommand="SELECT QuestionID, Question, QuestionOrder, AnswerExplanation
FROM dbo.Question
WHERE (QuestionID IN
(SELECT DISTINCT QuestionID
FROM dbo.QuizContent
WHERE (QuizID = @QuizID)))"
DeleteCommand="DELETE FROM [Question] WHERE [QuestionID] = @QuestionID"
InsertCommand="INSERT INTO [Question] ([Question], [QuestionOrder], [AnswerExplanation]) VALUES (@Question, @QuestionOrder, @AnswerExplanation)"
UpdateCommand="UPDATE [Question] SET [Question] = @Question, [QuestionOrder] = @QuestionOrder, [AnswerExplanation] = @AnswerExplanation WHERE [QuestionID] = @QuestionID">
<DeleteParameters>
<asp:Parameter Name="QuestionID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="Question" Type="String" />
<asp:Parameter Name="QuestionOrder" Type="Int32" />
<asp:Parameter Name="AnswerExplanation" Type="String" />
<asp:ControlParameter ControlID="ListView1" Name="QuizID" PropertyName="SelectedValue" Type="Int32" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="Question" Type="String" />
<asp:Parameter Name="QuestionOrder" Type="Int32" />
<asp:Parameter Name="AnswerExplanation" Type="String" />
</UpdateParameters>
<SelectParameters>
<asp:ControlParameter ControlID="ListView1" Name="QuizID" DefaultValue="0"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
--%>
...
问题:
问题顺序
答复说明
图像(URL)
--%>
那么怎么做呢?不要在同一个列表视图中添加图像,而是显示现有图像的选择,并提供一个添加另一个图像的选项,该选项将打开一个弹出窗口,其中包含所有图像的列表和一个上载新图像的选项 创建一个视图以组合问题和图像:
CREATE VIEW QuestionsView AS
SELECT Question.*, QuestionImage.ID AS ImageID
FROM Question LEFT OUTER JOIN QuestionImage ON Question.QuestionID = QuestionImage.QuestionID
使用此视图为ListView选择记录
要显示下拉列表,请执行以下操作:
<td>
<asp:DropDownList runat="server" DataSourceID="imagesDataSource" SelectedValue="<%# Bind("ImageID") %>" DataTextField="URL" DataValueField="ID" />
<asp:SqlDataSource runat="server" ID="imagesDataSource" SelectCommand="SELECT * FROM QuestionImage" />
</td>
由于我是一名新的ASP.NET开发人员,您能为我提供一个示例或代码片段吗?我可以使用SqlDataSource而不是ObjectDataSource吗?另外,图像对象有一个QuestionID,它与您假设的不完全相反,所以它可以吗?可以,您可以使用sqldatasource。如果我是你,我会将ImageID列添加到Questions表中,但是如果你想保持数据库的优化,请创建一个包含此列的视图,我不明白你的意思。您能告诉我如何使用view来完成它吗?除此之外,我将如何在这个ListView中添加图像的add选项?