<% @Import Namespace="System.Data" %>
<% @Import Namespace="System.Data.SqlClient" %>
<script language="vb" runat="server">
'Create a connection
Dim myConnection as New SqlConnection(ConfigurationSettings.AppSettings("connectionString"))
Dim ddlDataSet as DataSet = New DataSet()
Sub Page_Load(sender as Object, e as EventArgs)
If Not Page.IsPostBack then
BindData()
End If
End Sub
Function GetCategories() as DataSet
'Populate the ddlDataSet
Const strSQLDDL = "SELECT FAQCategoryID, Name FROM tblFAQCategory ORDER BY Name"
Dim myDataAdapter as SqlDataAdapter = New SqlDataAdapter(strSQLDDL, myConnection)
myDataAdapter.Fill(ddlDataSet, "Categories")
Return ddlDataSet
End Function
Sub BindData()
'2. Create the command object, passing in the SQL string
Const strSQL as String = "SELECT FAQID, F.FAQCategoryID, SubmittedByName, F.Description, FC.Name AS CategoryName FROM tblFAQ F INNER JOIN tblFAQCategory FC ON F.FAQCategoryID = FC.FAQCategoryID WHERE FAQID <= 25"
'Set the datagrid's datasource to the datareader and databind
Dim resultsDataSet as New DataSet()
Dim myDataAdapter as SqlDataAdapter = New SqlDataAdapter(strSQL, myConnection)
myDataAdapter.Fill(resultsDataSet)
dgPopularFAQs.DataSource = resultsDataSet
dgPopularFAQs.DataBind()
End Sub
Sub dgPopFAQs_Edit(sender As Object, e As DataGridCommandEventArgs)
dgPopularFAQs.EditItemIndex = e.Item.ItemIndex
BindData()
End Sub
Sub dgPopFAQs_Cancel(sender As Object, e As DataGridCommandEventArgs)
dgPopularFAQs.EditItemIndex = -1
BindData()
End Sub
Sub dgPopFAQs_Update(sender As Object, e As DataGridCommandEventArgs)
'Determine what category was selected
Dim strCategoryID as String, strCategoryName as String
strCategoryID = CType(e.Item.FindControl("lstCategories"), DropDownList).SelectedItem.Value
strCategoryName = CType(e.Item.FindControl("lstCategories"), DropDownList).SelectedItem.Text
'Determine the FAQID
Dim strFAQID as String
strFAQID = e.Item.Cells(1).Text
'Get the SubmittedByName
Dim strSubmittedBy as String = CType(e.Item.Cells(4).Controls(0), TextBox).Text
'Get the Description
Dim strDesc as String
strDesc = CType(e.Item.FindControl("txtDescription"), TextBox).Text
lblUpdateResults.Text = "You opted to edit FAQID " & strFAQID & ". You set the Category to " & _
strCategoryID & ", which is the " & strCategoryName & " category. You " & _
"set the submitted by name to " & strSubmittedBy & " and the description to " & _
strDesc
dgPopularFAQs.EditItemIndex = -1
BindData()
End Sub
Function GetSelectedIndex(CID as String) as Integer
Dim iLoop as Integer
Dim dt as DataTable = ddlDataSet.Tables("Categories")
For iLoop = 0 to dt.Rows.Count - 1
If Int32.Parse(CID) = Int32.Parse(dt.Rows(iLoop)("FAQCategoryID")) then
Return iLoop
End If
Next iLoop
End Function
</script>
<form runat="server">
<asp:label id="lblUpdateResults" Font-Bold="True" runat="server" />
<p>
<asp:datagrid id="dgPopularFAQs" runat="server"
AutoGenerateColumns="False"
HeaderStyle-HorizontalAlign="Center"
HeaderStyle-BackColor="Red"
HeaderStyle-ForeColor="White"
HeaderStyle-Font-Bold="True"
HeaderStyle-Font-Name="Verdana"
AlternatingItemStyle-BackColor="#dddddd"
ItemStyle-Font-Name="Verdana"
OnEditCommand="dgPopFAQs_Edit"
OnCancelCommand="dgPopFAQs_Cancel"
OnUpdateCommand="dgPopFAQs_Update">
<Columns>
<asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="OK" />
<asp:BoundColumn DataField="FAQID" ItemStyle-Width="10%" ReadOnly="True"
ItemStyle-HorizontalAlign="Center" HeaderText="FAQ ID" />
<asp:TemplateColumn HeaderText="Category">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "CategoryName") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" id="lstCategories"
DataValueField="FAQCategoryID" DataTextField="Name"
DataSource='<%# GetCategories() %>'
SelectedIndex='<%# GetSelectedIndex(Container.DataItem("FAQCategoryID")) %>' />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Question">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Description") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="txtDescription" Columns="75"
Text='<%# Container.DataItem("Description") %>' />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="SubmittedByName" HeaderText="Submitted By" />
</Columns>
</asp:datagrid>
</form>
|