I have gone through with your code.
1) You need to first modify then script code line as $("[id*=#LinkButton1]").click(function () { to $("[id*=LinkButton1]").click(function () {
2) You are not using Id value in web method GetSavedpost it just returning the list value. But also working proper as it shows first list valuer in modal popup.
There is no any bug in code.
Check the below modified code.
HTML
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" />
<script type="text/javascript">
$(function () {
$("[id*=LinkButton1]").click(function () {
var id = $(this).closest('div').find($('[id*=Label2]')).text();
$.ajax({
type: "POST",
url: "Home.aspx/GetSavedpost",
data: '{id:"' + id + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
$("[id*=TextBox1]").val(response.d[0].complainant_name);
$("[id*=TextBox2]").val(response.d[0].complaint_time);
$("[id*=TextBox3]").val(response.d[0].floor_number);
$("[id*=TextBox4]").val(response.d[0].room_number);
$("[id*=TextBox5]").val(response.d[0].status);
$('#myModal').modal('show');
}
});
return false;
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div class="container">
<asp:DataList ID="Datasaved" runat="server" Width="100%">
<ItemTemplate>
<div class="" style="margin-left: 6px">
<div class="box box box-solid direct-chat direct-chat" style="margin-bottom: 8px">
<div class="well-sm" style="">
<div class=" gamma-container " style="width: 100%; clear: both;">
<asp:Label Text='<%#Eval("complainant_Name") %>' runat="server" />
</div>
<div class="caption">
<p>
<asp:Label ID="lblpost" runat="server" Text='<%# Eval("status")%>' Font-Bold="False"
Font-Strikeout="False" ForeColor="#333333" CssClass="" Font-Names="" Font-Size="" />
<asp:Label ID="Label2" runat="server" Text='<%#Eval("complaint_id") %>' style="display:none;"></asp:Label>
</p>
<p>
<asp:LinkButton ID="LinkButton1" runat="server" CssClass="btn btn-primary">
<asp:Label ID="Label1" runat="server" Text="$"></asp:Label> View Details</asp:LinkButton>
</p>
</div>
</div>
</div>
</ItemTemplate>
</asp:DataList>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">
Complaint Details</h4>
</div>
<div class="modal-body">
<table class="table table-responsive">
<tr>
<td>
<b>Complainant Name: </b>
<asp:TextBox ID="TextBox1" runat="server" CssClass="form-control"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<b>Complaint Time:</b>
<asp:TextBox ID="TextBox2" runat="server" CssClass="form-control"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<b>Floor Number: </b>
<asp:TextBox ID="TextBox3" runat="server" CssClass="form-control"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<b>Room Number: </b>
<asp:TextBox ID="TextBox4" runat="server" CssClass="form-control"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<b>Status: </b>
<asp:TextBox ID="TextBox5" runat="server" CssClass="form-control"></asp:TextBox>
</td>
</tr>
</table>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</body>
</html>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string constr = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT complaint_id,complainant_name,complaint_time,floor_number,room_number,status from complaint where status in ('Open','Pending')"))
{
cmd.Connection = con;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
Datasaved.DataSource = dt;
Datasaved.DataBind();
}
}
}
}
[WebMethod]
public static List<complaint> GetSavedpost(string id)
{
string constr = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT complaint_id,complainant_name,complaint_time,floor_number,room_number,status from complaint where status='Open'" ))
{
cmd.Connection = con;
List<complaint> complaint = new List<complaint>();
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
complaint.Add(new complaint
{
complaint_id = sdr["complaint_id"].ToString(),
complainant_name = sdr["complainant_name"].ToString(),
complaint_time = sdr["complaint_time"].ToString(),
floor_number = sdr["floor_number"].ToString(),
room_number = sdr["room_number"].ToString(),
status = sdr["status"].ToString()
});
}
}
con.Close();
return complaint;
}
}
}
public class complaint
{
public string complaint_id { get; set; }
public string complainant_name { get; set; }
public string complaint_time { get; set; }
public string floor_number { get; set; }
public string room_number { get; set; }
public string status { get; set; }
}
You need to pass Id value To webmethod for select stament which you have skiped. also make sure if you dont want to display the pending result in modal popup then then you need to disable the view details option.
You first need to change your WebMethod and then your code logic.