In this article I am going to explain how to
write standard code to create comment box in ASP.NET c#.
Create a SQL table for insert comment
Create a SQL table for insert comment
CREATE
TABLE InsComment
(
CommentId
BIGINT identity(1,
1)
,NAME VARCHAR(50)
,Comment
VARCHAR(500)
)
|
Now I am writing a XSLT file code to display comment after Save (Create a XSLT
fie in "XSLT" floder with name "History.xslt")
Solution Explorer look like
<?xml
version="1.0"
encoding="utf-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template
match="/">
<xsl:for-each
select="Comments/Comment">
<div
style="border:1px
solid #cccccc; padding:10px; margin:5px 0px; color:#50505b;">
<div
style="
float:left; margin-left:10px;">
<div
style="border-bottom:1px
solid #cccccc; padding:5px 0px; position:relative;">
<div
style="font-weight:bold;
float:left; width:80px; color:blue;">Name
:</div>
<div
style="float:left;
color:blue;"><xsl:value-of
select="NAME"/></div>
<div
style="clear:both;"></div>
</div>
<div
style="">
<div
style="font-weight:bold;
float:left; width:100px;">Comment:</div>
<div
style="float:left;"><xsl:value-of
select="Comment"/></div>
<div
style="clear:both;"></div>
</div>
</div>
<div
style="clear:both;"></div>
</div>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
|
Default.aspx Code
<%@
Page Language="C#"
AutoEventWireup="true"
CodeFile="Default.aspx.cs"
Inherits="_Default"
%>
<!DOCTYPE
html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head
runat="server">
<title></title>
<style
type="text/css">
.drp
{
background:
#F4F4F4;
border: 1px
solid #DEDCDD;
color: #555555;
height: 25px;
padding-left:
10px;
margin-bottom:10px;
-moz-transition:
all 0.3s
linear;
-o-transition:
all 0.3s
linear;
-webkit-transition:
all 0.3s
linear;
transition: all
0.3s linear;
font-family:
Arial, Helvetica,
sans-serif;
font-size: 12px;
}
.drp:focus
{ outline:none;
border:1px
solid #F90;
}
.med-form-col-1-8
{ width:12.5%;
}
.med-form-col-2-8
{ width:25%;
}
.med-form-col-3-8
{ width:37.5%;
}
.med-form-col-4-8
{ width:50%;
}
.med-form-col-5-8
{ width:62.5%;
}
.med-form-col-6-8
{ width:75%;
}
.med-form-col-7-8
{ width:87.5%;
}
.med-form-col-8-8
{ width:100%;
}
.med-form-col-1-8,
.med-form-col-2-8,
.med-form-col-3-8,
.med-form-col-4-8,
.med-form-col-5-8,
.med-form-col-6-8,
.med-form-col-7-8,
.med-form-col-8-8
{
float:left;
padding:1px
10px;
box-sizing:
border-box;
-moz-box-sizing:
border-box;
-ms-box-sizing:
border-box;
-webkit-box-sizing:
border-box;
-khtml-box-sizing:
border-box;
}
.med-form-col-1-8
label,
.med-form-col-2-8
label,
.med-form-col-3-8
label,
.med-form-col-4-8
label,
.med-form-col-5-8
label,
.med-form-col-6-8
label,
.med-form-col-7-8
label,
.med-form-col-8-8
label,
{
display:block
!important;
width:100%
!important;
margin:0
!important;
float:none
!important;
}
.med-form-item.large,
.med-form-item.large
.drp { width:100%;
}
.med-form-item.medium,
.med-form-item.medium
.drp { width:75%;
}
.med-form-item.small,
.med-form-item.small
.drp { width:55%;
}
.frmlbl
{ color: #50505b;
padding: 0px
10px 0px
0px; font-size:
14px;
font-weight:400; !important
}
.clr
{ clear:both;
}
@media only
screen and (max-width:600px) {
.med-form-col-1-8,
.med-form-col-2-8,
.med-form-col-3-8,
.med-form-col-4-8,
.med-form-col-5-8,
.med-form-col-6-8,
.med-form-col-7-8,
.med-form-col-8-8
{
display:block
!important;
width:100%
!important;
margin:0
!important;
float:none
!important;
}
}
.btn
{ height: 50px;
margin: 0;
padding: 0
20px;
vertical-align: middle;
background:
#9c9c9c; border:
0; font-family:
'Raleway',
sans-serif; font-size:
16px;
font-weight: 300;
line-height:
50px; color:
#fff; -moz-border-radius:
4px; -webkit-border-radius:
4px;
border-radius: 4px;
text-shadow:
none; -moz-box-shadow:
none; -webkit-box-shadow:
none; box-shadow:
none;
-o-transition: all
.3s; -moz-transition:
all .3s;
-webkit-transition:
all .3s;
-ms-transition:
all .3s;
transition: all
.3s; }
</style>
<script
type="text/javascript">
function Enablebutton(val) {
if (val.value.trim() !=
"") {
document.getElementById('#btnsavecomment').disabled
= false;
$('#btnsavecomment').attr("style",
"background-color:Yellow");
}
else {
document.getElementById('#btnsavecomment').disabled
= true;
$('#btnsavecomment').removeAttr("style");
}
}
</script>
</head>
<body>
<form
id="form1"
runat="server">
<fieldset>
<legend>Comment</legend>
<div
class="med-form-col-8-8">
<label
class="frmlbl"><asp:Label
ID="lbltotcomment"
runat="server"
ForeColor="Blue"
Font-Bold="true"></asp:Label>
<asp:LinkButton
ID="btnlink"
runat="server"
Text="View all"
onclick="btnlink_Click"
></asp:LinkButton>
<asp:LinkButton
ID="btnlinktop"
runat="server"
Text="Last one"
onclick="btnlinktop_Click"></asp:LinkButton>
</label>
<div
class="med-form-item
large">
<asp:Xml
ID="xmlContacts"
runat="server"></asp:Xml>
<asp:TextBox
ID="txtcomment"
onkeyup="Enablebutton(this);"
runat="server"
MaxLength="500"
Height="80"
CssClass="drp"
TextMode="MultiLine">
</asp:TextBox>
</div>
</div><!--
End col-2-8 -->
<div
class="clr"></div>
<asp:Label
ID="lblmsg"
runat="server"></asp:Label>
<div
align="right"
style="padding:10px
15px 0px 0px;">
<asp:Button
ID="btnsavecomment"
OnClick="btnsavecomment_Click"
runat="server"
Text="Post
comment" CssClass="btn
btn-primary"
/>
</div>
<div
style="clear:both;"></div>
</fieldset>
</form>
</body>
</html>
|
Default.aspx.cs code
using
System;
using
System.Linq;
using
System.Data;
using
System.Data.SqlClient;
public
partial class
_Default : System.Web.UI.Page
{
string
constr = "Data Source=.;Initial Catalog=Test;uid=******;pwd=**********";
protected void Page_Load(object
sender, EventArgs e)
{
if
(!IsPostBack)
{
Getcomments();
}
}
private
string Getxml(DataTable
dt)
{
DataTable
dtclone = dt.Clone();
foreach (DataColumn column
in dtclone.Columns)
{
column.DataType =
typeof(string);
}
foreach (DataRow row
in dt.Rows)
{
dtclone.ImportRow(row);
}
foreach (DataRow row
in dtclone.Rows)
{
for (int i = 0; i <
dtclone.Columns.Count; i++)
{
dtclone.Columns[i].ReadOnly = false;
if (string.IsNullOrEmpty(row[i].ToString()))
{
row[i] =
string.Empty;
}
else
{
row[i] =
Convert.ToString(row[i]).Trim();
}
}
}
DataSet dsclone = new
DataSet();
dsclone.Tables.Add(dtclone);
dsclone.DataSetName =
"Comments";
dsclone.Tables[0].TableName
= "Comment";
return dsclone.GetXml();
}
private
void Getcomments(string
loadtype = "L")
{
SqlDataAdapter da = new
SqlDataAdapter("select
CommentId,NAME,Comment from InsComment",constr);
DataSet ds = new
DataSet();
da.Fill(ds);
if
(ds != null)
{
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
{
lbltotcomment.Text = "Comments " +
Convert.ToString(ds.Tables[0].Rows.Count);
var dt = ds.Tables[0];
if (loadtype ==
"L")
{
dt=
ds.Tables[0].AsEnumerable()
.Where((r,
i) => i >= dt.Rows.Count-1).CopyToDataTable();
}
string xml = Getxml(dt);
btnlink.Visible
= true;
btnlinktop.Visible = true;
xmlContacts.DocumentContent = xml;
xmlContacts.TransformSource = Server.MapPath("~/XSLT/History.xslt");
}
else
{
lbltotcomment.Text = "Comments 0";
btnlink.Visible
= false;
btnlinktop.Visible = false;
}
}
else
{
lbltotcomment.Text =
"Comments 0";
btnlink.Visible =
false;
}
}
}
protected void
btnsavecomment_Click(object sender,
EventArgs e)
{
try
{
using (SqlConnection
connection = new
SqlConnection(constr))
{
connection.Open();
SqlCommand myCommand =
new
SqlCommand("Insert into InsComment (NAME,Comment)
values ('Varun',@Comment)", connection);
myCommand.Parameters.Add("@Comment",
SqlDbType.VarChar, 500);
myCommand.Parameters["@Comment"].Value
= txtcomment.Text.Trim();
myCommand.CommandType = CommandType.Text;
int res = myCommand.ExecuteNonQuery();
connection.Close();
if (res > 0)
{
txtcomment.Text
= string.Empty;
Getcomments();
lblmsg.Text =
"Save Successfully";
}
else
{
lblmsg.Text =
"Data Not Saved";
}
}
}
catch (Exception ex)
{
lblmsg.Text =
ex.Message.ToString();
}
}
protected void btnlinktop_Click(object
sender, EventArgs e)
{
Getcomments();
btnlinktop.Enabled =
false;
btnlink.Enabled =
true;
}
protected void btnlink_Click(object
sender, EventArgs e)
{
Getcomments("A");
btnlinktop.Enabled =
true;
btnlink.Enabled =
false;
}
}
|
OutPut